Jvm
// 示例
-Xms1024m -Xmx1024m -Xss1m -Xmn512m -XX:+HeapDumpOnOutOfMemoryError
参数配置 | 释义 |
---|---|
-xms1024m | 初始堆大小,jvm会尽力维持在这个值 |
-xmx1024m | 最大堆,上限,也可写作-XX:MaxHeapSize=1024m |
-xss1m | 栈大小,也可写作-XX:ThreadStackSize=1024k |
-Xmn512m | 新生代的大小(一般为堆内存的1/3-1/4最合适) |
-XX:+HeapDumpOnOutOfMemoryError | OOM时导出堆文件 |
gc的分类
结局就是OOM了。
总结:
-
Minor GC 时主要是复制算法
- Minor GC 时主要是复制算法,不会产生STW(Stop The World) Major GC 时
- 标记清除算法:1:GC root可达的对象标记;2:二次遍历,未作标记的进行删除操作。缺点是会发生STW.
- 标记压缩算法:在标记删除基础上将存活的像内存一侧进行压缩,解决内存碎片问题。 1
何时会触发Full GC:
1、调用System.gc
2、方法区空间不足
3、老年代空间不足
0-9被占用了,又来了20位的对象,此时9-29被占用,此时0-9被释放,进入一个30位对象,因为0-9不够30位,所以只能占用29-59区间,如果接下来进入的都大于10位,0-9位就作为内存碎片一直闲置。 ↩︎