加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Java内存走漏的引入

发布时间:2019-02-01 01:00:46 所属栏目:建站 来源:Java面经
导读:Java最明显的上风之一是内存打点。 您只需建设工具,Java垃圾网络器认真分派和开释内存。 可是,环境没有那么简朴,由于Java应用措施中常常产生内存走漏。 本教程声名什么是内存走漏,为什么会产生内存走漏,以及怎样防备内存走漏。 1. 什么是内存走漏 内

Java最明显的上风之一是内存打点。

您只需建设工具,Java垃圾网络器认真分派和开释内存。

可是,环境没有那么简朴,由于Java应用措施中常常产生内存走漏。

本教程声名什么是内存走漏,为什么会产生内存走漏,以及怎样防备内存走漏。

1. 什么是内存走漏

内存走漏的界说:应用措施不再行使工具,可是垃圾网络器不能删除它们,由于它们正在被引用。

要领略这个界说,我们必要领略内存中的工具状态。

下图声名白哪些是未行使的,哪些是未引用的。

Java内存走漏的引入

在图中,有引用的工具和未引用的工具。

未引用的工具将被垃圾网络,而引用的工具将不会被垃圾网络。

未引用的工具必定是未行使的,由于没有其他工具引用它。

然而,并非全部未行使的工具都是未引用的。

个中一些正在被引用!

这就是内存走漏的来历。

2. 为什么会产生内存走漏

让我们看一下下面的示例,看看为什么会产生内存走漏。

在下面的例子中,工具A是指工具B。A的保留期(t1 - t4)比B的保留期(t2 - t3)长得多。

当B不再在应用措施中行使时,A如故持有对它的引用。

这样,垃圾网络器就不能从内存中删除B。

这也许会导致内存不敷的题目,由于假如A对更多的工具执行沟通的操纵,那么将会有许多未网络的工具,并耗损内存空间。

也有也许B持有其他工具的一堆引用。

B引用的那些工具也不会被网络。

全部这些未行使的工具都将耗损名贵的内存空间。

Java内存走漏的引入

3.怎样防备内存走漏

下面是一些防备内存走漏的快速实践能力:

留意荟萃类,如HashMap、ArrayList等,由于它们是发明内存走漏的常见位置。

当它们被声明为静态时,它们的生命周期与应用措施的生命周期沟通。

留意变乱监听器和回调。假如侦听器已注册,但在不再行使该类时未打消注册,则也许产生内存走漏。

假如一个类打点它本身的内存,措施员应该鉴戒内存走漏。

[1]常常乘以指向其他工具的工具的成员变量必要为null。  【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读