Java 有关于GC问题的食谱指南吗?
几乎每个人最终都会遇到Java的GC问题 是否有一个食谱指南或半自动工具来调优GC for Java 我的理由是:Java 有关于GC问题的食谱指南吗?,java,garbage-collection,Java,Garbage Collection,几乎每个人最终都会遇到Java的GC问题 是否有一个食谱指南或半自动工具来调优GC for Java 我的理由是: 几乎所有人最终都会遇到这些问题 有很多可能的因素(比如说20个),其中只有少数几个会影响你的问题 大多数人不知道如何识别关键因素,因此GC调优更像是一门黑色艺术,而不是一门科学 并非所有人都使用热点虚拟机。不同的Sun版本具有不同的GC特性 没有什么动力去尝试(比如每天用稍微不同的设置运行VM,看看它们是如何运行的) 所以问题真的是:有什么东西我可以用清单的方式吗?或者甚至是一
- 几乎所有人最终都会遇到这些问题
- 有很多可能的因素(比如说20个),其中只有少数几个会影响你的问题
- 大多数人不知道如何识别关键因素,因此GC调优更像是一门黑色艺术,而不是一门科学
- 并非所有人都使用热点虚拟机。不同的Sun版本具有不同的GC特性
- 没有什么动力去尝试(比如每天用稍微不同的设置运行VM,看看它们是如何运行的)
- 这是非常具体的。我的问题更广泛
- 又是非常狭窄的范围
- 仅热点
- 80%在那里,但我缺少清单/食谱/傻瓜方法
在各种资源中,我编制了一份健全性检查表,用于分析我的应用程序的GC行为和性能。这些指导原则是通用的,适用于任何特定于供应商的JVM,但也包含特定于HotspotVM的信息以供说明
-XX:+DisableExplicitGC
- 计算实时数据集,分配率,以及促销率。这将告诉你是否需要一个更大的堆,或者你的年轻一代是否太小,或者你的幸存者空间是否溢出,等等
- 计算总GC时间,它应该是GC分析本身,并调整许多您可以设置的参数。如果希望GC自动调整,请将GC参数保持在最小值。如果您必须指定参数,那么这些参数将专门针对您的用例,并且很难自动确定。我从来没有为自己做过这样的检查表,因为首先要做的是:•有很多动机进行实验(比如每天使用稍微不同的设置运行VM,看看它们是如何运行的);D通常最简单的解决方法就是调整一下内存设置,就这样完成了。@Peter:有没有办法将这些参数保存为一种“起点”,这样就不必在每次重新启动时都处理这些琐事了?或者至少看看它们?@Angel:我从未在一家以简洁的方式试验GC设置的公司工作过。@Aaron,那会很有趣的。您可以通过JMX获得这些信息,但不能以命令行的形式。这可能是一个有用的工具。感谢您的努力,但这仅适用于热点。SAP和IBM的Java虚拟机怎么样?我在这个答案中添加了更多内容。不太清楚SAP,我一直认为它是Sun JVM的包装器。我会等几天再接受它,希望有人有更符合我愿望清单的东西:-)