Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有关于GC问题的食谱指南吗?_Java_Garbage Collection - Fatal编程技术网

Java 有关于GC问题的食谱指南吗?

Java 有关于GC问题的食谱指南吗?,java,garbage-collection,Java,Garbage Collection,几乎每个人最终都会遇到Java的GC问题 是否有一个食谱指南或半自动工具来调优GC for Java 我的理由是: 几乎所有人最终都会遇到这些问题 有很多可能的因素(比如说20个),其中只有少数几个会影响你的问题 大多数人不知道如何识别关键因素,因此GC调优更像是一门黑色艺术,而不是一门科学 并非所有人都使用热点虚拟机。不同的Sun版本具有不同的GC特性 没有什么动力去尝试(比如每天用稍微不同的设置运行VM,看看它们是如何运行的) 所以问题真的是:有什么东西我可以用清单的方式吗?或者甚至是一

几乎每个人最终都会遇到Java的GC问题

是否有一个食谱指南或半自动工具来调优GC for Java

我的理由是:

  • 几乎所有人最终都会遇到这些问题
  • 有很多可能的因素(比如说20个),其中只有少数几个会影响你的问题
  • 大多数人不知道如何识别关键因素,因此GC调优更像是一门黑色艺术,而不是一门科学
  • 并非所有人都使用热点虚拟机。不同的Sun版本具有不同的GC特性
  • 没有什么动力去尝试(比如每天用稍微不同的设置运行VM,看看它们是如何运行的)
所以问题真的是:有什么东西我可以用清单的方式吗?或者甚至是一个分析GC日志或堆转储的工具,并给我具体的提示,让我去哪里查找(而不是告诉我“95%的数据分配在byte[]类型的对象中”,这基本上是无用的)

相关问题:

  • 这是非常具体的。我的问题更广泛
  • 又是非常狭窄的范围
  • 仅热点
  • 80%在那里,但我缺少清单/食谱/傻瓜方法

各种GC信息的参考:

Oracle

这也

IBM

[链接失效]

SAP JVM

抱歉,我对SAP了解不多,但提供了一些我发现的东西

至于烹饪书,在这个级别上,调优很可能是特定于应用程序的,但这是一个有趣的话题

附录

您还提到了分析工具。以下列出了一些候选人:


在各种资源中,我编制了一份健全性检查表,用于分析我的应用程序的GC行为和性能。这些指导原则是通用的,适用于任何特定于供应商的JVM,但也包含特定于HotspotVM的信息以供说明

  • 禁用显式GC。显式GC是一种糟糕的编码实践,它从来没有帮助过。使用
    -XX:+DisableExplicitGC

  • 启用完整GC日志记录。轻而有力

    • 计算实时数据集分配率,以及促销率。这将告诉你是否需要一个更大的堆,或者你的年轻一代是否太小,或者你的幸存者空间是否溢出,等等

    • 计算总GC时间,它应该是GC分析本身,并调整许多您可以设置的参数。如果希望GC自动调整,请将GC参数保持在最小值。如果您必须指定参数,那么这些参数将专门针对您的用例,并且很难自动确定。我从来没有为自己做过这样的检查表,因为首先要做的是:•有很多动机进行实验(比如每天使用稍微不同的设置运行VM,看看它们是如何运行的);D通常最简单的解决方法就是调整一下内存设置,就这样完成了。@Peter:有没有办法将这些参数保存为一种“起点”,这样就不必在每次重新启动时都处理这些琐事了?或者至少看看它们?@Angel:我从未在一家以简洁的方式试验GC设置的公司工作过。@Aaron,那会很有趣的。您可以通过JMX获得这些信息,但不能以命令行的形式。这可能是一个有用的工具。感谢您的努力,但这仅适用于热点。SAP和IBM的Java虚拟机怎么样?我在这个答案中添加了更多内容。不太清楚SAP,我一直认为它是Sun JVM的包装器。我会等几天再接受它,希望有人有更符合我愿望清单的东西:-)