繁体   English   中英

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

[英]How to control the memory usage of processes spawned by a JVM

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

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

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

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

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

如果“控制”是指“限制到已知上限”,那么您可以简单地通过

-Xms`lower_bound` 

-Xmx`upper_bound` 

生成进程时,将其连接到虚拟机的args。 在这里查看适当的设置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM