可以从Java应用程序内部设置Java GC选项,例如 MaxGCPauseMillis (用于G1垃圾收集器),还是必须在用于启动应用程序的命令行上设置它们?
即。我可以在代码中执行以下任何部分:
java -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:GCPauseIntervalMillis=100 -jar app.jar
答案 0 :(得分:6)
不,这是不可能的。您无法更改已启动的VM的GC选项。
另外,我认为这不是一个好主意。 GC选项应独立于源代码,因为
现代应用程序(例如Eclipse)通常使用属性文件,您可以在其中指定VM选项,包括GC调整选项,我认为这是一个干净的解决方案。
答案 1 :(得分:1)
使用来自JDK的 jinfo -flag 命令,可以修改某些(但极少数)-XX选项云以运行java进程。
您可以使用-XX:+ PrintFlagsFinal选项查看所有JVM XX选项的列表,在运行时由 jinfo 修改{managable}类型云的选项。
但那可能是个坏主意。如果您担心应用程序中的GC行为,则必须了解GC。不幸的是,没有神奇的XX选项,没有其他捷径......