Java GC 选项,例如MaxGCPauseMillis(用于 G1 垃圾收集器)可以从 Java 应用程序内部设置,还是必须在用于启动应用程序的命令行上设置?
即我可以在代码中执行以下任何部分:
java -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:GCPauseIntervalMillis=100 -jar app.jar
Java GC 选项,例如MaxGCPauseMillis(用于 G1 垃圾收集器)可以从 Java 应用程序内部设置,还是必须在用于启动应用程序的命令行上设置?
即我可以在代码中执行以下任何部分:
java -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:GCPauseIntervalMillis=100 -jar app.jar
No, this is not possible. You cannot change the GC options of an already started VM.
Plus, I do not think that this is a good idea. GC options should be independent from the source-code because
Modern applications (e.g. Eclipse) usually use a property file where you can specify the VM options, including GC tuning options, I think that this is a clean solution.
使用 JDK 中的jinfo -flag命令修改某些(但很少)-XX 选项云以运行 java 进程。
您可以使用 -XX:+PrintFlagsFinal 选项查看所有 JVM XX 选项的列表,具有 {managable} 类型云的选项在运行时由jinfo修改。
但这可能是个坏主意。如果您关心应用程序中的 GC 行为,则必须了解 GC。没有神奇的 XX 选项,也没有其他捷径……不幸的是。