java的垃圾回收与内存泄露的关系:【新手可忽略不影响继续学习】

马克-to-win:上一节讲了,(i)对象被置成null.(ii)局部对象(无需置成null)当程序运行到右大括号.(iii)匿名对象刚用完,垃圾回收线程就早早晚晚都能把它过去占的内存给回收了。这么说,java中难道就没有c++的内存泄露的问题了吗?(内存泄露的定义就是: 咱自己程序不用的内存,系统本应回收但由于各种原因却没有回收成功)马克-to-win:答案: 错,java中有内存泄露。下面我们就通过一个例子来说明。下面的例子中,Mark_to_win m作为实例是占有内存空间的。即使后来m = null;把它置为null,垃圾回收线程也回收不了它占有的空间。因为等我们后面集合框架学习了Vector以后,你就会知道:Vector v是一个类似数组的东西。马克-to-win: 任何通过v.add(m);加到Vector里的东西,Vector都会保留一个对它的引用。正因为有这个引用,垃圾回收系统当中的有向图会认为,这个对象还是可达的,所以不会回收它的内存空间。因为size_Make_to_win非常大,(是maxMemory的0.8倍),所以系统最后就崩溃了。马克-to-win: 用专业术语讲,就是开始时是内存泄漏,泄露多了就造成内存溢出了,所以就曝出OutOfMemoryError的错误了。

例2.1.5---

import java.util.Vector;
class Mark_to_win {
    long data;
}
public class Test {
    static Vector v = new Vector(10);
    public static void main(String[] args) throws InterruptedException {
/*maxMemory:获取系统所能提供的最大内存。*/        
        int size_Make_to_win = (int) (Runtime.getRuntime().maxMemory() * 0.8);
        for (int i = 1; i < size_Make_to_win; i++) {
            Mark_to_win m = new Mark_to_win();
            v.add(m);
            m = null;
        }
        System.out.println("finish");
    }
}

更多内容请见原文,文章转载自 :https://blog.csdn.net/qq_44639795/article/details/103106500

最新文章

  1. 虚拟化平台cloudstack(7)——新版本的调试
  2. hive 函数 Cube
  3. C语言中的#define预处理指令
  4. vsphere vcenter 添加域管理员
  5. request.setCharacterEncoding 和常用内置对象 跳转
  6. android开发之路09(浅谈SQLite数据库01)
  7. hdu_5806_NanoApe Loves Sequence Ⅱ(双指针)
  8. 【HighCharts系列教程】六、去除highCharts版权信息的几种方法
  9. OGG学习笔记03-单向复制简单故障处理
  10. EFDB 基本规范&amp;知识
  11. MyBetis3.2框架技术
  12. 孤儿文档是怎样产生的(MongoDB orphaned document)
  13. 双十一临近,怎样让买家流畅地秒杀? ——腾讯WeTest独家开放电商产品压测服务
  14. 禁止img图片拖动在新窗口打开
  15. PyCharm运行Nosetests并导出测试报告
  16. 关于用IIS在.net平台发布网页的一些坑
  17. spring cloud 随笔记录(1)-
  18. matplotlib&amp;numpy画图
  19. Faster-RCNN tensorflow 程序细节
  20. cartographer 安装问题

热门文章

  1. linux curl 的用法指南
  2. php 23种设计模型 - 单例模式
  3. mybatis 日志实现 学习总结03
  4. 详解Java中的抽象类和抽象方法
  5. Centos8 Yum 安装Nginx指定版本
  6. vue3 区别于 vue2 的“与众不同”
  7. Net6 Configuration &amp; Options 源码分析 Part1
  8. spring——IOC理论
  9. Parrot Linux安装教程
  10. shellLab实验报告