内存溢出和内存泄漏的区别、产生原因以及解决方案

内存溢出和内存泄漏是两个不同的问题,但是他们都是和堆有着密切的关系。
主要说下JVM内存结构以及怎么使用方案。

内存溢出?常见的内存溢出?内存溢出的解决方案

内存溢出:

当你申请2个字节的时候,如果使用Int类型,占用4个字节,这种情况会出现内存溢出

可能出现内存溢出的原因:

1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
3.代码中存在死循环或循环产生过多重复的对象实体;
4.使用的第三方软件中的BUG;
5.启动参数内存值设定的过小

内存溢出的解决方案:

第一步,修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。)

第二步,检查错误日志,查看“OutOfMemory”错误前是否有其它异常或错误。(查看下报错日志)

第三步,对代码进行走查和分析,找出可能发生内存溢出的位置。(Debug)

第四步,使用内存查看工具动态查看内存使用情况(可自行百度)

内存泄漏

项目中定义太多被static修饰过的变量,但是这些变量都是在永久区的,不一定能够被GC定期回收,随着堆积,下次在申请内存的时候就会出现内存泄漏。

小编给大家的建议

大家在开发中,一定不要定义太多的变量,因为被static修饰过的变量都是存在永久区的,具体可以了解下 JVM内存结构

在实战中学习,在快乐中成长

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值