什么是内存泄漏的表现(内存泄露的直接表现)

什么是内存溢出,什么是内存泄漏?这是很多小伙伴经常问我的一个问题,今天花3分钟时间给大家介绍一下。先来介绍什么是内存溢出?1、什么是内存溢出?发生内存溢出。我们来看到右侧的区域,假设我们JVM中可用的内存空间只剩下3M,但是我们要创建一个5

什么是内存溢出,什么是内存泄漏?这是很多小伙伴经常问我的一个问题,今天花3分钟时间给大家介绍一下。先来介绍什么是内存溢出?

1、什么是内存溢出?

发生内存溢出。

我们来看到右侧的区域,假设我们JVM中可用的内存空间只剩下3M,但是我们要创建一个5M的对象,那么,新创建的对象就放不进去了。这个时候,我们就叫做内存溢出。就好比是一个容量只有300ml的水杯,我们硬要往里面倒500ml的水,这时候,水就会溢出,倒不进去了,这就相当于是内存的溢出。

那么,内存泄漏又是怎么回事呢?

2、什么是内存泄漏?

还是来看这张图吧,

什么是内存泄漏的表现(内存泄露的直接表现)

它代表业务代码执行时,所需要占用的内存空间。这段业务代码中创建了两个1M的对象,一起会占用2M内存。当对象使用完之后,这两个对象并没有释放,因此内存中会留下2M的内存空间一直被占用。而我们的业务代码在程序中会被反复执行,每次执行都会留下2M不被释放,反复执行多次之后,随着时间的累积,就会有大量的对象用完不被释放,导致这些对象不能得到回收而发生内存溢出,这种情况就叫做内存泄漏。

也就说,在我们的业务代码执行过程中,有些对象它应该被回收,但是又有其他对象引用引用它,因此,GC不能自动回收。所以,该回收的垃圾对象没有被回收,垃圾对象越堆越多,可用内存越来越少,若可用内存无法存放新的垃圾对象,最终导致内存泄漏。内存泄漏最终会导致内存溢出。

3、如何避免?

我们在Code过程中,特别是些一些流对象,

什么是内存泄漏的表现(内存泄露的直接表现)

比如OutputStream,Reader,BitMap,Document,很容易忘了Close。最麻烦的是还要顺序回收,顺序错了还产生空指针,所以,大家在Code过程一定要注意,当然,现在有很多IDE会智能提示,也避免了很多低级错误。

以上就是我对内存溢出和内存泄漏的分析,听懂了的小伙伴,请关注点个赞,下次不迷路。

S信【Tom】或【666】即可免费领取需要更多干货内容,还有海量面试资料,只弹干货不惨水!

我是被编程耽误的文艺Tom,如果大家还有其他疑问,请在评论区留言。关注微信公众号『 Tom弹架构 』可获取更多技术干货!往期视频已经整理成文档形式,需要的小伙伴点个关注,搜索下方名片!

什么是内存泄漏的表现(内存泄露的直接表现)

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 203304862@qq.com 举报,一经查实,本站将立刻删除。本文链接:https://xz1898.com/n/103488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-30 15:57
下一篇 2022-10-30 15:57

相关推荐

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:97552693@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息