线上永久代内存溢出

1.今天线上爆出了 java.lang.OutOfMemoryError: PermGen space

当时吓尿了,又没发包怎么突然报永久代内存溢出,临时先加大了永久代内存,将启动参数改为:

-XX:PermSize=128m为 -XX:PermSize=256m

启动异常消失。

 

2.留了一台机器jvm参数为之前的,来观察问题。用 jstat命令查看发现惊人一幕(jstat命令详用:  https://blog.csdn.net/LuoZheng4698729/article/details/79443853

不得了占了99.07%了,后来发现代码用到了扫描包,并调用了Class.forName() 将相关类都加载了进来,到达了永久代内存临界点,程序运行过程中如果在要加载常量和其它动态类,就没有内存了,导致报了线上内存溢出。

 

 

3.PermGen(永久代)

  绝大部分 Java 程序员应该都见过 "java.lang.OutOfMemoryError: PermGen space "这个异常。这里的 “PermGen space”其实指的就是方法区。不过方法区和“PermGen space”又有着本质的区别。前者是 JVM 的规范,而后者则是 JVM 规范的一种实现,并且只有 HotSpot 才有 “PermGen space”,而对于其他类型的虚拟机,如 JRockit(Oracle)、J9(IBM) 并没有“PermGen space”。由于方法区主要存储类的相关信息,所以对于动态生成类的情况比较容易出现永久代的内存溢出。

完结!

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值