JVM-内存溢出、调优笔记

前言

    首先默认大家知道新生代,老年代和永久代的概念,不懂的请自行百度。

 

1.堆内存溢出

    新生代+老年代 = 堆内存, (OutOfMemoryError:Java heap space) 是指堆溢出

    可以通过设置-Xms:1024m, -Xmx:2048,来设置堆内存大小,其中,-Xms:表示初始化堆大小,-Xmx:表示最大堆大小

 

2. 永久代溢出

    永久代溢出(OutOfMemoryError: PermGen space)可以分为两种情况,第一种是常量池溢出,第二种是方法区溢出。可以通过设置-XX:PermSize = 512m, -XX:MaxPermSize=1024m,来改变永久代内存大小。

 

3.栈内存溢出

    一般递归容易引起栈内存溢出(StackOverflowError)

    -Xss:1m,表示每个线程堆栈的大小

 

常用法则1:

堆初始值和最大值设置为老年代的3~4倍

常用法则2:

永久代的初始值和最大值应该比永久代活跃数据大1.2~1.5倍

常用法则3:

新生代空间应该为老年代空间活跃数据的1~1.5倍

 

内存溢出常见原因:

栈内存溢出:程序所要求的栈深度过大。 
堆内存溢出: 分清内存泄露还是 内存容量不足。泄露则看对象如何被 GC Root 引用,不足则通过调大-Xms,-Xmx参数。 
永久代溢出:Class对象未被释放,Class对象占用信息过多,有过多的Class对象。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值