我正在编写一个创建 JVM 并需要控制由 JVM 生成的进程的内存使用的应用程序。
问问题
1629 次
3 回答
2
我假设您正在谈论使用Runtime.exec(...)
etc生成的非 Java“进程”。
答案是这是特定于操作系统的,而不是标准 Java 库支持的东西。但是,如果您要在 Linux(或 UNIX)中执行此操作,我可以想到三种方法:
- 让Java通过shell包装脚本生成命令,该脚本使用
ulimit
内置来减少内存限制,然后exec
是实际命令;见man 1 ulimit
。 - 编写一个与 shell 包装器相同的 C 小命令。这将比包装脚本方法具有更少的开销。
- 尝试对 JNI 和本机代码库执行相同的操作。不推荐,因为您可能需要复制 and 的行为
Process
,ProcessBuilder
这可能非常困难。
于 2009-10-12T11:24:01.170 回答
2
您可以使用 JMX 连接到 JVM 进程以获取有关内存状态/分配的信息并引发垃圾收集。但您首先需要启用 JVM 的 JMX 监控:http: //java.sun.com/j2se/1.5.0/docs/guide/management/agent.html。
于 2009-10-12T10:17:43.803 回答
0
于 2009-10-12T10:15:20.470 回答