background image

 

 

    垃圾收集问题并不一定会表现为一个 OOM 条件,过度的垃圾收集可以理
解成是 JVM GC 线程在短时间里进行轻微或超量收集集合数据而导致的 JVM
暂停时间很长和性能下降。可能有以下几个原因:
    
    与 JVM 的负载量和应用程序内存占用量相比,Java 堆可能选择的太小。
    
    JVM GC 策略使用不合理。
    
    应用程序静态或动态内存占用量太大,不适合在 32 位 JVM 上使用。
    
    JVM OldGen 随着时间推移,泄漏越来越严重,而 GC 在几个小时或者几
天后才发现。
    
    JVM PermGen 空间(只有 HotSpot VM)或本机堆随着时间推移会泄露是
一个非常普遍的问题;OOM 的错误往往是观察一段时间后,应用程序进行动
态调动。
    
    YoungGen 和 OldGen 的比例空间与你的应用程序不匹配。
    
    Java 堆在 32 位的 VM 上太大,导致本机堆溢出,具体可以表现为 OOM 试
着去链接一个新的 Java EE 应用程序、创建一个新的 Java 线程或者需要计算
本地内存分配任务。
    
    建议:
    
    观察和深入理解 JVM 垃圾回收。启动 GC,根据健康合理的评估来提供所有的
数据。
    
    记住,GC 方面的相关问题不会在开发中或者功能

测试

时发现,它需要在多

用户高负载的

测试

环境下发现。