70.222:[GC[PSYoungGen:131072K->15437K(152896K)]131072K->15509K(502464K),0.0228420secs][Times:user=0.09sys=0.01,real=0.02secs] 最佳答案 您可以找到解释详细GC输出的教程,例如。在:verbosegcoutputtutorial-Java7HeapsettingsandreadingverboseGCoutput看verbosegcoutputtutorial-Java7,可以看到YoungGen空间分析:20
我想知道JDK7版本中“垃圾优先”(G1)收集器的官方状态是什么。我想使用G1作为CMS的低暂停gc替代品,但前提是我可以真正相信它的稳健性。在JDK7出来之前,G1被宣传为Shiny的新gc,将取代CMS收集器,甚至成为JDK7中的默认gc。但是,现在使用OracleJDK7u1,G1不再是任何设备上的默认gc我试过的机器。尽管在JDK7中使用-XX:+UseG1GC时不再需要指定-XX:+UnlockExperimentalVMOptions,但它是一项JVM功能,官方完全没有记录:Java7(JDK7)garbagecollectionanddocumentationonG1我能
在一个应用程序中,我有以下-verbose:gc[GC(MetadataGCThreshold)8530310K->2065630K(31574016K),0.3831399secs][FullGC(MetadataGCThreshold)2065630K->2053217K(31574016K),3.5927870secs][GC(MetadataGCThreshold)8061486K->2076192K(31574016K),0.0096316secs][FullGC(MetadataGCThreshold)2076192K->2055722K(31574016K),0.9376
几乎每个人最终都会遇到Java的GC问题。是否有针对Java调整GC的食谱指南或半自动化工具?我的理由是:几乎所有人最终都会遇到这些问题有许多可能的因素(比如20个),其中只有少数会影响您的问题。大多数人不知道如何识别关键因素,因此GC调优更像是一门魔法而不是一门科学。并非所有人都使用HotSpot虚拟机。不同的Sun版本具有不同的GC特性。几乎没有进行实验的动力(例如每天使用略有不同的设置运行虚拟机,看看效果如何)。所以问题真的是:有什么东西可以以list的方式使用吗?或者甚至可能是一个分析GC日志或堆转储并向我提供具体提示的工具(而不是告诉我“95%的数据分配在byte[]类型的对
本文here建议使用-XX:+UseParNewGC“ToenableaparallelyounggenerationGCwiththeconcurrentGC”。我的困惑是,为了同时启用并行和并发GC,我应该使用-XX:+UseParNewGC或同时使用-XX:+UseParNewGC和-XX:+UseConcMarkSweepGC?PS我正在使用JVM6。 最佳答案 由于您链接的文档适用于1.4.2虚拟机,因此我假设您使用的是1.4.2虚拟机(JVM5和6的行为不同)。来自http://java.sun.com/docs/hot
我想让一些长时间运行的服务器应用程序定期输出Java中的一般GC性能数字,比如Runtime.freeMemory()等GC等价物。比如完成的周期数、平均时间等。我们的系统在客户机器上运行,怀疑配置错误的内存池会导致过多的GC频率和长度-我认为定期报告基本GCActivity通常是好的。是否有任何独立于平台的方式来做到这一点?编辑:我特别想在运行时将此数据输出到系统日志(控制台);这不是我想连接到JVM的东西,就像JConsole或JVisualVM一样。Edit2:MXbean看起来像我想要的-有没有人有一个获得其中之一的工作代码示例? 最佳答案
在离开方法之前,我“被迫”将myLocalVar=null;语句添加到finally子句中。原因是为了帮助GC。有人告诉我下次服务器崩溃时我会在晚上收到短信,所以我最好这样做:-)。我认为这是没有意义的,因为myLocalVar的范围是方法,并且一旦方法退出就会“丢失”。额外的归零只会污染代码,否则是无害的。我的问题是,这个关于帮助GC的神话从何而来?(我被称为“Java内存书籍”)你知道“权威”的任何文章更深入地解释它吗?有没有可能这不是神话,但真的有帮助?如果是这样,怎么做?将局部变量归零会造成任何危害吗?为了澄清,方法如下所示:voidmethod(){MyClassmyLoca
在Java中,并发模式失败意味着并发收集器未能从tenured和permanentgen中释放足够的内存空间,不得不放弃并让完整的stop-the-worldgc启动in.最终结果可能会非常昂贵。我理解这个概念,但从来没有对这个概念有过全面的了解A)什么可能导致并发模式失败和B)解决方案是什么?这种不清楚导致我在没有太多提示的情况下编写/调试代码,并且经常不得不在没有特殊原因的情况下绕过从Foo到Bar的那些性能标志,只需要尝试一下。我想在这里向开发人员了解您的体验如何?如果您遇到过这样的性能问题,原因是什么以及您是如何解决的?如果您有编码建议,请不要过于笼统。谢谢!
System.gc()和Runtime.gc()有什么区别? 最佳答案 两者都是一样的。System.gc()实际上等同于Runtime.gc()。System.gc()内部调用Runtime.gc()。唯一的区别是System.gc()是一个类方法,而Runtime.gc()是一个实例方法。所以,System.gc()更方便。 关于java-system.gc()和runtime.gc()之间的区别,我们在StackOverflow上找到一个类似的问题: h
如果您查看Android日志,您可能会看到很多此类内容。它们是什么意思,知道这些可能有助于我们更好地分配内存。例子:28470dalvikvmDGC_FOR_MALLOCfreed665objects/239992bytesin71ms28470dalvikvmDGC_FOR_MALLOCfreed673objects/240288bytesin87ms21940dalvikvmDGC_EXPLICITfreed4802objects/185320bytesin78ms28470dalvikvmDGC_FOR_MALLOCfreed666objects/240536bytesin63m