草庐IT

gc_probability

全部标签

java - GC 花了三个小时来降低 1.2GB 的堆,可能是什么原因?

在我们的其中一台服务器上,垃圾收集花了将近三个小时来尝试(成功地)降低1.2GB的堆内存。从1.4GB到200MB。在此期间CPU使用率很高,几乎80-100%。可能是什么原因?我们有4台具有相同配置(JVM设置、服务器配置、硬件、网络)的此类服务器,假设没有人对其进行任何更改,那么特定服务器运行3小时GC的原因可能是什么。所有其他服务器每次GCActivity只需要5到10分钟。附上一张来自HPBAC的图表,供您引用。显示我认为GC启动的时间,以及GC停止的时间。(正如Stephen指出的更确凿的发现)当服务器管理员回复我时提供这些信息:您所使用的JVM的确切版本使用。(标准Java

java - 如何最小化 GC_FOR_ALLOC 的出现?

我的应用程序导致这些可怕的GC_FOR_ALLOC在特定位置(方法)多次发生:12-2922:20:30.229:D/dalvikvm(10592):GC_FOR_ALLOCfreed1105K,14%free10933K/12615K,paused33ms,total34ms12-2922:20:30.260:D/dalvikvm(10592):GC_FOR_ALLOCfreed337K,13%free11055K/12615K,paused25ms,total26ms12-2922:20:30.288:D/dalvikvm(10592):GC_FOR_ALLOCfreed278K,

java - 如果 JVM 在进行 GC 时不断移动对象,它如何解析引用?

我正在阅读有关JVM调优的文章,我突然想到JVM在执行GC时会不断移动对象。但是Java对象之间存在相互引用,人们会认为这是作为指针实现的,但是JVM不可能在每次移动对象后遍历整个堆,并更新所有引用;这肯定会永远持续下去。那么,如果引用没有改变,但对象的物理位置发生了变化,它如何解析引用呢?我已经阅读了很多关于JVM的文章,但从未在任何地方解释过,甚至没有暗示过。[编辑]我的意思是引用是单向的。从指针指向指向是“瞬时的”,但反过来需要完整的堆扫描。虽然有可能,但似乎不太可能。如果10K对象在一次次要收集中幸存下来,那么进行10K次全堆扫描以更新对这些对象的引用需要多长时间?必须使用某种

java - 什么是类的 GC 根?

在Java中,有称为垃圾收集根(GC根)的特殊对象。它们作为垃圾收集标记机制的根对象(见图)。Thisarticle描述了四种类型的GC根:局部变量活跃的话题静态变量JNI引用还提到:Classesthemselvescanbegarbage-collected.没有收集GC根,因此类本身不是GC根。那么类的GC根是什么? 最佳答案 SowhatareGCrootsfortheclasses?类加载器,有效地-通过其他GC根。如果没有任何东西可以到达类加载器——这意味着没有任何东西可以到达由该类加载器创建的任何类或这些类的任何实例—

java - ParNew gc 会阻止世界吗?

我看到如下GC输出:2010-12-10T16:00:44.942+0800:1443.562:[GC1443.562:[ParNew:201856K->17318K(201856K),0.0352970secs]2113334K->1949037K(4416748K)icms_dc=0,0.0354310secs][Times:user=0.12sys=0.00,real=0.04secs]2010-12-10T16:00:46.207+0800:1444.827:[GC1444.827:[ParNew:196774K->22400K(201856K),0.0119290secs]2

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分钟