1.内存泄漏:是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问,而系统也不能再次将它分配给需要的程序。 就相当于你租了个带钥匙的柜子,你存完东西之后把柜子锁上之后,把钥匙丢了或者没有将钥匙还回去,那么结果就是这个柜子将无法供给任何人使用,也无法被垃圾回收器回收,因为找不到他的任何信息。
2.内存溢出:就是你要的内存空间超过了系统实际分配给你的空间,此时系统相当于没法满足你的需求,就会报内存溢出的错误。
3.关系:内存泄漏的堆积最终会导致内存溢出
4.内存溢出的原因:①内存中加载的数据量过于庞大②集合类中有对象的引用,使用完未清空,JVM不能回收③代码中存在死循环或者循环产生过多重复的对象实体④启动参数的内存值设置过小
5.内存溢出的解决办法:①修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加)②检查错误日志,查看“OutOfMemory”错误前是否有其它异常或错误。③对代码进行走查和分析,找出可能发生内存溢出的位置。
网友评论