内存泄漏是指不再被使用的对象或者变量一直被占据在内存中。

理论上来说,Java是有GC垃圾回收机制的,也就是说,不再被使用的对象,会被GC自动回收掉,自动从内存中清除。

但是,即使这样,Java也还是存在着内存泄漏的情况,
1、长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露。

尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是Java中内存泄露的发生场景,通俗地说,就是程序员可能创建了一个对象,以后一直不再使用这个对象,这个对象却一直被引用,即这个对象无用但是却无法被垃圾回收器回收的,这就是Java中可能出现内存泄露的情况,例如,缓存系统,我们加载了一个对象放在缓存中(例如放在一个全局map对象中),然后一直不再使用它,这个对象一直被缓存引用,但却不再被使用。

检查java中的内存泄露,一定要让程序将各种分支情况都完整执行到程序结束,然后看某个对象是否被使用过,如果没有,则才能判定这个对象属于内存泄露。

如果一个外部类的实例对象的方法返回了一个内部类的实例对象,这个内部类对象被长期引用了,即使那个外部类实例对象不再被使用,但由于内部类持久外部类的实例对象,这个外部类对象将不会被垃圾回收,这也会造成内存泄露。

2、当一个对象被存储进HashSet集合中以后,就不能修改这个对象中的那些参与计算哈希值的字段了,否则,对象修改后的哈希值与最初存储进HashSet集合中时的哈希值就不同了,在这种情况下,即使在contains方法使用该对象的当前引用作为的参数去HashSet集合中检索对象,也将返回找不到对象的结果,这也会导致无法从HashSet集合中单独删除当前对象,造成内存泄露

Java中会存在内存泄漏吗,请简单描述。相关推荐

  1. 在java中会存在内存泄漏吗?

    ● 请问,在java中会存在内存泄漏吗?请简单描述一下. 考察点:内存 参考回答: Java中的确存在Java的内存泄漏, 并且事态可以变得相当严重 Java garbage collector自动释 ...

  2. Java中如何防止内存泄漏的发生

    在Java开发中我们常常会遇到内存泄漏的情况发生.那么为什么会发生内存泄漏,以及怎样去防止! 内存泄漏的定义:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着. 为什么会发生 ...

  3. java中会存在内存泄漏吗,请简单描述

    理论上Java因为有垃圾回收机制(GC)不会存在内存泄露问题(这也是Java被广泛使用于服务器端编程的一个重要原因):然而在实际开发中,可能会存在无用但可达的对象,这些对象不能被GC回收,因此也会导致 ...

  4. java中对于异常的处理,代码简单描述

    package com.hbut.basetest; import java.io.FileInputStream; import java.io.FileNotFoundException; imp ...

  5. 一位面试官询问我:Java中的JVM内存溢出和内存泄露是什么?我这么回答成功拿到了offer

    一位面试官询问我:Java中的JVM内存溢出和内存泄露是什么?我这么回答成功拿到了offer. 墨眉无锋墨家代码 2020-11-22 20:16:50 10525 收藏 56 分类专栏: Java ...

  6. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 转载于:https://www.cnblogs.com/yinzhengjie/p/9 ...

  7. JAVA中堆栈和内存分配原理

    JAVA中堆栈和内存分配原理 1.栈.堆 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在 ...

  8. 实例解析网络编程中的另类内存泄漏

    本文分享自华为云社区<[网络编程开发系列]一种网络编程中的另类内存泄漏>,作者:架构师李肯. 1 写在前面 最近在排查一个网络通讯的压测问题,最后发现跟"内存泄漏"扯上 ...

  9. java的栈区 堆区存放什么_简单整理java中的栈内存, 堆内存是什么?

    上一篇文章简单整理了栈(stack), 堆(heap), 队列(queue)的结构 这一篇继续整理java中的 占内存,堆内存. Java把内存划分成两种:一种是栈内存,一种是堆内存. 这里需要解释一 ...

最新文章

  1. oracle sql 全是子查询查询速度太慢如何优化_如果面试官问你如何优化mysql分页查询,请把这篇文章甩给他!...
  2. C语言图形界面的编程
  3. AMD规范:简单而优雅的动态载入JavaScript代码
  4. 一步步用zTree(2)
  5. JavaScript中的作用域、作用域链、预解析
  6. boost::hana::cycle用法的测试程序
  7. java oracle 字符_Oracle转义字符
  8. Spring Framework 核心原理与源码解析-大纲
  9. AOP和OOP的区别
  10. oc基础-OC基础-类的使用
  11. 山地车中轴进水表现_你一定不知道的自行车中轴知识
  12. Linux 课程设计 每日小结
  13. linux查看云锁密码命令,Linux安装云锁
  14. 研究生如何做好科研和发表文章
  15. 怎样在线压缩png图片大小?将这个压缩方法分享给大家
  16. Java Data truncation:Incorrect xxx value: ‘xxx‘ for column ‘xxx‘ at row 1问题
  17. 自适应设计:创建流畅的YouTube和Vimeo内容
  18. arcgis计算植被覆盖度
  19. 人一能之,己百之;人十能之,己千之
  20. 今天让Windows为我读首诗

热门文章

  1. 一篇就懂的CMMI认证三级评估准备及其注意事项
  2. 【小白入门】Socket和webSocket入门 这一篇就够了!用php的Socket自己实现简单webSocket服务器!
  3. Python备份CSDN博客的完整页面
  4. NVIDIA,显卡驱动,CUDA版本之间兼容关系及安装
  5. 三国志战略版:国庆英雄集结解说_二
  6. 数据结构与算法A实验六图论(C语言参考代码)
  7. 012 协方差、性质及习题
  8. 2020年李永乐线性代数强化笔记-特征值、特征向量与二次型
  9. 网站管理助手4.0 mysql_网站管理助手v4.0 建站流程
  10. JavaScript 加减乘除运算