当前位置: 首页 > java oom
  • 32 bit的系统上,例如linux单个进程最多用3g的空间,在3g这种heap大小的情况下,cms gc压根就没任何优势,ParallelOldGC就OK了。64 bit其实也需要看heap size多大,我的建议是在可接受的fgc暂停时间的情况下,都不应该选cms gc,cms gc实现的复杂度(这和它的目标有关系)决定了它的稳定性很难和Parallel GC去比,另外cms gc的碎片问题绝对是让人头疼的问题。

    阅读全文
    Java 548 人阅读 抢沙发 , , , , ,
  • 需要查看目前-Xss的大小,例如在这个例子中-Xss太大,导致连20个线程都无法创建,因此可解决的方法是降低-Xss的大小;如果Xss使用的是默认值,那么可通过jstack来查看下目前Java进程中是不是创建了过多的线程,或者是java heap太大,导致os没剩多少内存,从而创建不出线程。

    阅读全文
    Java 548 人阅读 抢沙发 , , , ,
  • 在分析OOM问题时,一方面是依赖OOM时dump出来的文件,但这个文件其实只会在Java进程中第一次出现OOM时生成,之后再OOM就不会生成了,这有可能出现真实的OOM的原因被假的OOM原因给掩盖掉;另一方面是依赖在出现OOM时的人工操作,这种人肉方式其实比较杯具。先等到频繁Full GC、OOM,首先通过jmap –histo来看看到底什么对象占用了大部分的内存(需要多执行几次,以确保正确性),原生的类型,那就只能借助dump文件来分析了,通过jmap –dump手工dump出Heap文件。

    阅读全文
    Java 1,183 人阅读 抢沙发 , , , , ,
  • Java OOM的种类有:java.lang.OutOfMemoryError: unable to create new native thread;java.lang.OutOfMemoryError: request bytes for . Out of swap space?;java.lang.OutOfMemoryError: Java heap space;java.lang.OutOfMemoryError: GC overhead limit execeeded;java.lang.OutOfMemoryError: PermGen space。

    阅读全文
    Java 1,137 人阅读 抢沙发 , , ,
  • 这个应用是期待在内存不够的情况下快速抛出OOM的,但在执行中却发现执行了4个多小时的Full GC,就是没有抛OOM,导致应用出现了问题,从GC代码来看,目前要比较快的触发OOM,只能是调整GCTimeLimit和GCHeapFreeLimit,不过都不好调,后来暂时是靠调整了GCHeapFreeLimit来帮助快速抛出OOM。

    阅读全文
    Java 558 人阅读 抢沙发 , , , ,