笔记

来源:互联网 发布:荣威erx5 知乎 编辑:程序博客网 时间:2024/05/16 23:41

直接内存溢出:

ByteBuffer.allocateDirect(1024) 申请直接内存,如果Xmx太大,导入系统内容过小,ByteBuffer.allocateDirect过大是,会导致OOM。

可通过-Xmx512M调整堆空间

------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------

Java有四种类型的垃圾回收器:
串行垃圾回收器(Serial Garbage Collector)
并行垃圾回收器(Parallel Garbage Collector)
并发标记扫描垃圾回收器(CMS Garbage Collector)
G1垃圾回收器(G1 Garbage Collector)

用法,如:

-XX:+UseParNewGC -XX:+PrintGCDetails  


------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------

过多线程导致OOM

由于每一个线程的开启都要占用系统内存,因此当线程数量太多时,也有可能导致OOM。由于线程的栈空间也是在堆外分配的,因此和直接内存非常相似,如果想让系统支持更多的线程,那么应该使用一个较小的堆空间


可以使用-Xss128k调整线程的栈空间


------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------

-XX:MaxPermSize=1024m  设置永久区(Perm)内存

0 0