如何控制JVM生成的进程的内存使用情况

时间:2009-10-12 09:44:20

标签: java memory controls process native

我正在编写一个创建JVM的应用程序,需要控制JVM生成的进程的内存使用情况。

3 个答案:

答案 0 :(得分:2)

您可以使用JMX连接到JVM进程以获取有关内存状态/分配的信息,还可以激发垃圾回收。但您首先需要启用JVM的JMX监视:http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html

答案 1 :(得分:2)

我假设你在谈论使用Runtime.exec(...)等产生的非Java“进程”。

答案是这是特定于操作系统的,而不是标准Java库支持的内容。但如果您打算在Linux(或UNIX)中执行此操作,我可以考虑三种方法:

  • 让Java通过shell包装器脚本生成命令,该脚本使用内置ulimit来减少内存限制,然后exec实际命令;见man 1 ulimit
  • 编写一个与shell包装器相同的C命令。这将比包装脚本方法的开销更少。
  • 尝试对JNI和本机代码库执行相同操作。不建议使用,因为您可能需要复制ProcessProcessBuilder的行为,这可能非常困难。

答案 2 :(得分:0)

如果通过'control'表示'限制为已知的上限',则可以简单地传递

-Xms`lower_bound` 

-Xmx`upper_bound` 
当你产生进程时,

到vm的args。 see the approproate setting here