老卫带你学---jvm的新生区,永久区,堆内存调优

老卫带你学—jvm的新生区,永久区,堆内存调优

新生区

  • 类:诞生和成长的地方,甚至死亡
  • 伊甸区:所有的对象都是在伊甸区new出来的
  • 幸存者区(0,1)

例图,假如Eden区域可以放10个对象,当Eden区域满的时候,进行一次轻GC,此时假设有一个对象到了service 0区域。如果service 0 区域也满了,那么就会调用一次重GC,将对象放入老年代中。

但是,如果新生代与老年代区域都满了,那么就会报OOM错误

在这里插入图片描述

永久区

永久代区域常驻内存,用来存放jdk自身携带的Class对象,以及java运行时的一些环境或类信息。这个区域不存在垃圾回收,关闭jvm虚拟机就会释放这个区域的内存

  • jdk1.6之前:永久代
  • jdk1.7 :永久代,但是慢慢退化,去永久代,常量池在堆中
  • jdk1.8之后,无永久代,常量池在元空间
  • 在这里插入图片描述
堆内存调优

可以通过如下语句查看jvm内存
在这里插入图片描述

默认情况系:分配的总内存是电脑的1/4,而初始化的内存是1/64

如果出现OOM错误,代表堆内存不够,这时候我们可以通过调整堆内存大小,来进行堆内存的调优

-Xms 1024m
-Xmx 1024m
-XX:PrintGCDetails

我们也可以使用JProfile来进行,错误定位,进而对该部分的代码进行优化

jprofile的作用:

  • 分析dump内存文件,快速定位内存问题
  • 获得堆中的数据
  • 获得大的对象

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值