2

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

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

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

2 回答 2

6

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

  • for the same application, you may need different GC options depending on VM-used, hardware used, etc.
  • GC options are properties totally orthogonal to the functional needs of your application.

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.

于 2013-01-28T19:35:43.337 回答
1

使用 JDK 中的jinfo -flag命令修改某些(但很少)-XX 选项云以运行 java 进程。

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

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

于 2013-01-29T10:08:35.973 回答