草庐IT

gc_maxlifetime

全部标签

java.lang.OutOfMemoryError : GC overhead limit exceeded on Android 1. 4

在Android1.4上运行gradle时,我收到java.lang.OutOfMemoryError:GC开销限制超出...这些是我的依赖:dependencies{compileproject(':android-crop')compileproject(':RTEditor-Toolbar')compilefiles('libs/apache-mime4j-0.6.jar')compilefiles('libs/httpmime-4.1.3.jar')/*compilefiles('libs/httpcore-4.4.1.jar')*/compilefiles('libs/jet

Java:您如何真正使用 JVMTI 的 ForceGargabeCollection 强制 GC?

我不是在寻找通常的“您只能使用System.gc()在Java中提示GC”的答案,这根本不是这个问题的意义所在。我的问题不是主观的,而是基于一个现实:GC可以在Java中被强制用于一个事实。我们每天使用的很多程序都可以做到这一点:IntelliJIDEA、NetBeans、VisualVM。它们都可以强制GC发生。它是如何完成的?我认为他们都在使用JVMTI,更具体地说,是ForceGarbageCollection(注意“Force”),但我该如何自己尝试呢?http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#For

java - java 垃圾收集日志条目 "Full GC (System)"是否意味着某个名为 System.gc() 的类?

垃圾收集日志中的“FullGC(System)”条目是什么意思?那个叫System.gc()的类?我的垃圾收集日志有两种不同的“完整gc”条目类型?一个带有“系统”一词,另一个没有。有什么区别?(更新:我搜索了这个词并没有找到明确的答案,只有几个问题。所以我想我会发布它。系统:164638.058:[FullGC(System)[PSYoungGen:22789K->0K(992448K)][PSOldGen:1645508K->1666990K(2097152K)]1668298K->1666990K(3089600K)[PSPermGen:164914K->164914K(1667

Java GC 安全点

当垃圾收集器在清理未引用的对象之前卡住应用程序线程时,所有线程都必须在其执行过程中处于“安全点”。我发现了大量描述安全点概念的文章,但很少有例子。在典型的Java方法中,安全点应该放在哪里?为什么?更重要的是,哪里不能出现安全点? 最佳答案 safepoint的确切定义和实现从一个VM实现更改为另一个,但考虑到HotspotVM,您可以在以下位置找到一个很好的定义:SafepointsinHotSpotJVM.HotSpotglossary说:ApointduringprogramexecutionatwhichallGCroots

java - 内部类与静态嵌套类的 GC 性能下降

我刚刚遇到了一个奇怪的效果,在跟踪它时,我注意到收集内部嵌套类与静态嵌套类似乎存在很大的性能差异。考虑这个代码片段:publicclassTest{privateclassPointer{longdata;Pointernext;}privatePointerfirst;publicstaticvoidmain(String[]args){Testt=null;for(inti=0;i所以代码所做的是使用内部类创建一个链表。该过程重复500次(出于测试目的),丢弃上次运行中使用的对象(这些对象会受到GC)。当以严格的内存限制(如100MB)运行时,此代码在我的机器上执行大约需要20分钟

java - 如何阅读冗长的 :GC output?

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

java - G1GC 还没有正式量产吗?

我想知道JDK7版本中“垃圾优先”(G1)收集器的官方状态是什么。我想使用G1作为CMS的低暂停gc替代品,但前提是我可以真正相信它的稳健性。在JDK7出来之前,G1被宣传为Shiny的新gc,将取代CMS收集器,甚至成为JDK7中的默认gc。但是,现在使用OracleJDK7u1,G1不再是任何设备上的默认gc我试过的机器。尽管在JDK7中使用-XX:+UseG1GC时不再需要指定-XX:+UnlockExperimentalVMOptions,但它是一项JVM功能,官方完全没有记录:Java7(JDK7)garbagecollectionanddocumentationonG1我能

java - 什么是元数据 GC 阈值以及如何调整它?

在一个应用程序中,我有以下-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问题。是否有针对Java调整GC的食谱指南或半自动化工具?我的理由是:几乎所有人最终都会遇到这些问题有许多可能的因素(比如20个),其中只有少数会影响您的问题。大多数人不知道如何识别关键因素,因此GC调优更像是一门魔法而不是一门科学。并非所有人都使用HotSpot虚拟机。不同的Sun版本具有不同的GC特性。几乎没有进行实验的动力(例如每天使用略有不同的设置运行虚拟机,看看效果如何)。所以问题真的是:有什么东西可以以list的方式使用吗?或者甚至可能是一个分析GC日志或堆转储并向我提供具体提示的工具(而不是告诉我“95%的数据分配在byte[]类型的对

Java 并发和并行 GC

本文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