Aar*_*lla 34 java garbage-collection
几乎每个人最终都会遇到使用Java的GC问题.
是否有烹饪指南或半自动化工具来调整GC for Java?
我的理由是这样的:
所以问题确实是:我能以检查清单的方式使用某些东西吗?或者甚至可能是一个分析GC日志或堆转储的工具,并给我具体的提示在哪里查看(而不是告诉我"95%的数据分配在byte []类型的对象中,这基本上是无用的).
相关问题:
Ale*_*leš 21
在各种资源中,我编写了一个健全性检查表,用于分析我的应用程序的GC行为和性能.这些指南是通用的,适用于任何特定于供应商的JVM,但也包含特定于HotspotVM的信息以供说明.
禁用显式GC.显式GC是一种糟糕的编码实践,它从来没有帮助.使用-XX:+DisableExplicitGC.
启用完整GC记录.轻巧而强大.
-XX:+PrintTenuringDistribution -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=jvm.log -XX:+HeapDumpOnOutOfMemoryError -Xloggc:gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -showversion考虑收集有关GC的信息的其他方法.记录很好,但有时可用的轻量级命令行工具可以提供更多的洞察力.例如.jstat热点,它将向您展示伊甸园,幸存者和老将的职业/能力.
收集类直方图这些是轻量级的,它将显示堆的内容.您可以在发现某些奇怪的GC活动时拍摄快照,也可以在Full GC之前/之后拍摄它们:
-XX:+PrintClassHistogramBeforeFullGC -XX:+PrintClassHistogramAfterFullGC.考虑不同的GC算法.虚拟机通常带有几种不同的GC实现,可提供各种权衡:吞吐量,占用空间,暂停/短暂停顿,实时等.考虑您拥有的选项并选择满足您需求的选项.
小心finalize().检查GC是否与使用的类保持同步finalize().此方法的执行可能非常昂贵,这可能会影响GC和应用程序吞吐量.
堆转储.这是重量级的第一步,将影响正在运行的应用程序.收集堆转储以进一步研究堆内容或确认在步骤4中观察到的假设.
使用的资源:
图书:
讲座/文章:
邮件列表:
Mer*_*lin 15
各种GC信息的参考:
神谕
这也是
Java SE 6 HotSpot [tm]虚拟机垃圾收集调整
IBM
微调垃圾收集 [link dead]
SAP JVM
对不起,我对SAP了解不多,但提供了一些我发现的东西.
至于食谱,调整很可能是在这个级别的应用程序特定,但它是一个有趣的主题.
附录
您还提到了分析工具.一些候选人列在这里:
| 归档时间: |
|
| 查看次数: |
5776 次 |
| 最近记录: |