当前位置:首页 > 编程问答 >

java中内存会泄露吗

时间:已被605人关注

码农之家
java存在内存泄露吗

18小时2分钟前回答

深入的探究这个问题就需要了解Java是如何管理内存的,需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间,对象的释放是由GC决定和执行的。在Java中,内存的分配是由程序完成的,而内存的释放是有GC完成的

Java理论上不存在内存泄露,因为有垃圾回收器(GC)对内存进行释放。

实际上,java也存在内存泄露问题,原因:主要是一些对象虽然不再被使用,但它们仍然被引用。

1、理论上来说,Java是有GC垃圾收机制的,也就是说,不再被使用的对象,会被GC自动收掉回,自动从内存中清除。
但是答,即使这样,Java也还是存在着内存泄漏的情况,
(1)长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露。
(2)当一个对象被存储进HashSet集合中以后,就不能修改这个对象中的那些参与计算哈希值的字段了,否则,对象修改后的哈希值与最初存储进HashSet集合中时的哈希值就不同了,在这种情况下,即使在contains方法使用该对象的当前引用作为的参数去HashSet集合中检索对象,也将返回找不到对象的结果,这也会导致无法从HashSet集合中单独删除当前对象,造成内存泄露

2、java导致内存泄露的原因很明确:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景。

3、Java存在内存泄露一般说内存泄漏有两种情况。一种情况如在C/C++ 语言中的,在堆中的分配的内存,在没有将其释放掉的时候,就将所有能访问这块内存的方式都删掉(如指针重新赋值);另一种情况则是在内存对象明明已经不需要的时候,还仍然保留着这块内存和它的访问方式(引用)。

已被211人点赞
参考资料
Java核心技术:卷I 基础知识
Java核心技术:卷I 基础知识 影印英文版 立即下载
神经网络算法与实现 基于Java语言
神经网络算法与实现 基于Java语言 中文清晰版

本书结合Java编程语言,由浅入深地介绍了神经网络算法的应用,涉及神经网络的构建、神经网络的结构、神经网络的学习、感知机、自组织映射等核心概念,适合对神经网络技术感兴趣的开发人员和业余读者阅读

立即下载
JavaScript正则表达式迷你书 v1.1
JavaScript正则表达式迷你书 v1.1 完整版

JavaScript 正则表达式迷你书 是由个人文章修改而成,感谢各平台读者的支持。 说起正则表达式,我之所以会去详细地研究它,最初的动机是,当我分析前端常见的框架和库的源码时,发现一般被卡住的地方就是它。后来逐渐学习并看懂了ldquo;天书rdquo;,仿佛进入了一个新世界。 有些工具就是这样,当你没有它时,可能并未觉得有啥不好,可是一旦你拥有了它,再也放不下手了。掌握正则了后,对字符串一些复杂操作,竟然能很快地实现。看待问题的角

立即下载
Java Web开发实例大全:基础卷
Java Web开发实例大全:基础卷 原书扫描版

本书筛选、汇集了Java Web开发从基础知识到高级应用各个层面约600个实例及源代码,主要内容有开发环境搭建、Java语言基础、HTML/CSS技术、JSP基础与内置对象、JavaBean技术、Servlet技术、过滤器与监听器技术、JSTL标签库

立即下载
Java 基础核心总结 清晰版 立即下载
Java编程思维
Java编程思维 全书中文版

本书从编程基础知识入手,用Java代码示例诠释计算机科学概念,教读者掌握“解决问题”的思维方式,具备Java编程思想,实用的计算机入门教程,无任何编程经验者的理想选择

立即下载
Java语言程序设计:基础篇
Java语言程序设计:基础篇 超清第10版

Java语言程序设计是Java语言的经典教材,本书全面整合了Java 8的特性,采用“基础优先,问题驱动”的教学方式,循序渐进地介绍了程序设计基础、解决问题的方法、面向对象程序设计、图形用

立即下载

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com