Java 在JVM中优化Xms/Xmx/XX:MaxPermSize
获得优化值Java 在JVM中优化Xms/Xmx/XX:MaxPermSize,java,jakarta-ee,garbage-collection,jvm,Java,Jakarta Ee,Garbage Collection,Jvm,获得优化值Xms/Xmx/XX:MaxPermSize的必要步骤是什么 当然,我可以设置一个较大的值,但正如您所知,GC需要在较大的内存中花费时间。当我可以抽出时间测试并找到这些值时,一般建议是什么 例如,以下数字有帮助吗 Eden Space heap usage - 42MB / 62MB (used / committed) Survivor Space heap usage - 8.5MB / 8.5MB (used / committed) CMS Old Gen heap usage
Xms/Xmx/XX:MaxPermSize
的必要步骤是什么
当然,我可以设置一个较大的值,但正如您所知,GC需要在较大的内存中花费时间。当我可以抽出时间测试并找到这些值时,一般建议是什么
例如,以下数字有帮助吗
Eden Space heap usage - 42MB / 62MB (used / committed)
Survivor Space heap usage - 8.5MB / 8.5MB (used / committed)
CMS Old Gen heap usage - 100MB / 217MB (used / committed)
Non-heap memory pool usage - 36MB
在极少数情况下,我需要调整这些值,有一个名为的程序,它包含在jdk(我认为是bin文件夹)中,我发现它非常有用。您可以连接到正在运行的vm并分析其所有运行时参数
在“插件”部分中,您还可以找到一个非常有用的插件,用于监控gc,您可以在其中查看到底发生了什么。一般规则是,在发现需要解决的问题之前,不应更改JVM内存设置。JVM在运行时调整大多数参数以适应您的应用程序方面做得非常好 如果发现需要优化内存参数,则取决于需要优化的内容。根据需要优化的方面,您将使用的设置会有很大的不同(例如,最小化暂停的设置与最大化吞吐量的设置非常不同)
如果您确实需要优化,请提供有关您需要优化的方面的更多信息。在调优GC时,您需要在较长时间内收集GC统计信息,然后采取行动。仅一个生成大小的快照是不够的 你应该:
- 使用
-XX:+PrintTenuringDistribution-XX:+UnlockDiagnosticVMOptions-XX:+LogVMOutput-XX:LogFile=jvm.log-XX:+HeapDumpOnAutofmemoryError-Xloggc:gc.log-XX:+PrintGCTimeStamps-XX:+PrintGCDetails-showversion
jstat
用于热点,该热点将显示伊甸园、幸存者和老世代的职业/容量- 实时数据集,分配率,以及推广率。这将告诉你是否需要一个更大的堆,或者你的年轻一代是否太小,或者你的幸存者空间是否溢出,等等
- 总GC时间,应该是
- Young GC过于频繁=>增加Young gen