【高级Java工程师】线上问题之内存爆炸 分析、定位与解决

前言

内存爆炸、OOM,CPU过高,线上程序反应太慢等问题,作为一个程序员这些问题每个人都有耳闻,但是细想一下又离我们很遥远,很多人好几年可能都没遇到过一次。
线上问题不容易碰到,但是碰到了不能解决就来不及了,就算没碰到自己不会解决心理也会很慌,所以一起学习吧

一、 内存配置说明

1.1 生产环境内存一般是多大?

内存一般是 6-16GB,内存过高对于JVM垃圾回收机制也会有不同,所以内存不是越大越好,当然处理大数据时内存有可能会配置比较高

1.2. JVM内存占用

我们都知道java服务器的内存大小设置参数:-Xmx 和 -Xms ,但是服务器启动时,并不会立马去申请最大内存数的内存,而是内存不够是才会去申请。通过添加参数: -XX:+AlwaysPreTouch 让服务器启动的时候就会去申请最大内存,减少再去申请内存时造成的消耗(小优化,作用不大)

二、 常见内存问题

2.1. 频繁调用GC

无论哪种GC策略,肯定都是要占用系统资源的(Stop the World),影响用户程序的执行,频繁调用gc这个问题应该在测试阶段就要被发现。采用server模式运行,加上打印GC日志参数:-XX:PrintGCDetails -Xloggc:gc.log,,添加该参数后gc日志会打印在在一个gc.log的文件中,我们就可以看到gc被调用的情况,很容易就能知道gc调用是否过多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值