经常被问的问题-jvm优化

中级或者高级开发面试或多或少都会被问到,你了解jvm内存结构吗,能说说jvm有哪些调优吗

这里简单阐述下我个人对jvm优化的了解,欢迎大家帮忙补充

虽然jvm内存模型分为5块,但是jvm优化主要在堆这里,堆是存放对象的内存空间,优化这个空间其实就是为了防止stop-the-world的发生,也就是full gc

关于垃圾回收的请点击这个链接浅谈java垃圾回收

回到正题,优化主要出现在以下几个地方

一,新生代老年代占比

二,新生代对象存活时间

三,伊甸园和两个幸存者占比

四,垃圾回收算法的选取

我们先从第一点说起,首先新生代老年代占比,如果新生代过小会导致以下几个问题:

1.过大的对象会直接放入老年代,从而使full gc频繁

2.新生代会频繁的出发young gc 影响系统性能

3.老年代过大,导致一次full gc时间过长,影响系统性能

默认新生代老年代占比为1:3

第二点,新生代对象存活时间如果太小,那么新生代很快就会放入老年代,容易是内存被占满从而触发full gc,我们的目标是尽量让不经常使用的对象在新生代被干掉,如果存活时间过长,则会占满新生代内存,导致频繁young gc 影响性能

第三点伊甸园和幸存者占比,我们知道每个对象最初都会生成在Eden,如果伊甸园过小,则gc频率过高,如果过大,则会导致对象直接从Eden直接进入到老年代,间接导致full gc频繁,默认Eden:Survivor0:Survivor1 为 8:1:1

第四点,垃圾回收算法,可以根据上面的链接进入查看有哪些算法,哪些符合自己的系统要求,如果使用CMS算法,可以用堆外内存来弥补他的缺点,由于我还未使用过堆外内存进行处理,所以暂时不发表意见


以上就是个人对jvm优化的看法,请大牛帮忙指点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值