在应用程序中设置Java GC选项

时间:2013-01-28 16:27:51

标签: java garbage-collection

可以从Java应用程序内部设置Java GC选项,例如 MaxGCPauseMillis (用于G1垃圾收集器),还是必须在用于启动应用程序的命令行上设置它们?

即。我可以在代码中执行以下任何部分:

java -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:GCPauseIntervalMillis=100 -jar app.jar

2 个答案:

答案 0 :(得分:6)

不,这是不可能的。您无法更改已启动的VM的GC选项。

另外,我认为这不是一个好主意。 GC选项应独立于源代码,因为

  • 对于相同的应用程序,您可能需要不同的GC选项,具体取决于使用的VM,使用的硬件等。
  • GC选项是完全正交的属性,可满足您应用程序的功能需求。

现代应用程序(例如Eclipse)通常使用属性文件,您可以在其中指定VM选项,包括GC调整选项,我认为这是一个干净的解决方案。

答案 1 :(得分:1)

使用来自JDK的 jinfo -flag 命令,可以修改某些(但极少数)-XX选项云以运行java进程。

您可以使用-XX:+ PrintFlagsFinal选项查看所有JVM XX选项的列表,在运行时由 jinfo 修改{managable}类型云的选项。

但那可能是个坏主意。如果您担心应用程序中的GC行为,则必须了解GC。不幸的是,没有神奇的XX选项,没有其他捷径......