是否可以增加java进程(运行时)的大小?

我有一个非常重要的过程在运行。 我无法阻止它,需要扩大java进程的大小! 有没有办法在线增加我的java进程的大小(在运行时)?

您可以在运行过程中增加以下内容。

  • 线程数
  • 堆栈使用的内存量(但是单个堆栈的最大大小)
  • 使用的本机内存量
  • 映射到内存的内存映射文件的数量
  • 共享库。

但你不能做的是增加最大堆大小。 这是最大的意思。 从技术上讲,这是因为整个堆必须是一个连续的内存区域,增加限制无济于事。

命令行参数-Xmx设置最大Java堆大小(mx)。 所有Java对象都是在Java堆上创建的,但JVM进程的总内存消耗包含的内容不仅仅是Java堆。 几个例子:

  • 生成(JIT:ed)代码
  • 加载的库(包括jar和类文件)
  • 控制java堆的结构
  • 线程堆栈
  • 用户本机内存(malloc:ed in JNI)

在确定应在单个服务器上运行的进程数量以及将最大堆大小设置为的内容时,请务必考虑这一点。 通常,堆是进程空间中最大的部分,但进程的总大小也取决于您的应用程序。

保留!=已提交

保留(或映射)内存的数量很容易被警告,但是在提交内存之前,进程不会使用任何物理内存资源。

所以我建议你不要增加-Xmx尺寸,但要遵循Peter Lawrey提供的解决方案!

您可以增加堆大小,但该配置取决于IDE。 例如:对于eclipse编辑eclipse.ini有

 -Xms - 2048m -Xmx - 2048m 

取决于你的RAM大小。

希望这可以帮助。