`
smartwgd
  • 浏览: 53757 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java GC基础

    博客分类:
  • java
阅读更多

Java GC
什么是GC?就是G:Garage垃圾 C:Collection收集。在我们使用对象的时候,总会生成然后销毁一些对象。如果我们要销毁的对象没有被销毁,那就是内存泄露。在C++里面,就有很多对象生成了没被销毁,导致了内存泄露。在Java中为了避免这种情况而引入了GC,它能帮我们清除掉大部分这种情况,但是有时也可能无法清除一小撮顽固的对象。详细看这里(http://www.ibm.com/developerworks/cn/java/l-JavaMemoryLeak/index.html)。

GC的工作原理
看了好几篇文章,提到了好多种算法。
一种是引用计数法。引用计数法,法如其名,就是当这个对象被引用一次,那就给它计数加一,被置为null或离开作用域就减一。垃圾收集时,将所有为0的都清除掉,但是对于那种循环引用的对象,传说中的孤岛,就没用了。这种算法很简单,很慢。
一种是有向图法。就是从根出发,搜索所有能到达的对象,然后清除掉所有不可到达的对象。至于实现起来就有多种方式了。
例如,用两个堆,将A堆中所有可到达的对象复制到B堆,然后清理A堆,缺点是要两个堆而且碰到大的对象复制起来据说很慢。
例如,从根出发遍历一遍堆里面所有可到达的对象,将这些对象标志为“可到达”,遍历完成后清除所有不可到达的。缺点是内存处理完成后就变得支离破碎了,感觉就像磁盘碎片似的。
例如,一种用block,还有“年代数”来做的垃圾收集,看的不是很明白。个人理解是这样的,分配内存的时候分出了好多块,块上面有计数器,用来表示他们是否存活。但对象被创造出来就放入块中,此时块计数加一,就像引用计数法那样工作。垃圾收集器这时候开始工作,碰到死了的块,整理里面的内存,然后认为它为一个新块。碰到活着的,代数加一。
(Thinking in java 第四章中“垃圾回收站如何工作”一段中有详细介绍)。

分享到:
评论
1 楼 thurchin 2014-03-11  
Garage  是车库 Garbage 才是垃圾

相关推荐

    Java基础[Java基础]--Java GC工作原理

    Java基础[Java基础]--Java GC工作原理

    Java SE编程入门教程 java GC(共6页).pptx

    Java SE编程入门教程 java GC(共6页).pptx Java SE编程入门教程 java instanceof(共3页).pptx Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 ...

    JavaGC调优基础.pdf

    ——学习参考资料:仅用于个人学习使用! 本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及侵权,请联系,会尽快处理! 未进行详尽测试,请自行调试!

    GC4-S301 手机游戏Java语言基础模拟试题.doc

    GC4-S301 手机游戏Java语言基础模拟试题

    Java面试基础测试题及答案

    4、 Java的核心机制是什么?并介绍其核心机制 1、JVM和GC 2、Jvm:在一台计算机上由软件或者硬件模拟的计算机(读取字节码代码的Cpu)。Java虚拟机(JVM)读取并处理经编译过的平台无关的字节码(class)文件;java...

    Java9中的GC调优基础

    在经过了几次跳票之后,Java9终于在原计划日期的...本文将主要讲解GC调优需要知道的一些基础知识,会涉及到一些GC的实现细节,但不会对实现细节做很全面的阐述,如果你看完本文之后,能对GC有一个大致的认识,那本文

    corejava基础重要知识点总结

    会被gc回收掉 -》 零引用内存回收 属性:对象有什么 方法:对象会什么 5: 动态更新 对于Sun公司官方提供的一些核心方法 值保留一个指向的关系 当若干年后核心类库升级了 我们的程序还是可以正常执行 这是挤兑...

    JAVA面试基础.docx

     Java虚拟机是Java语言底层实现的基础.Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入...

    Java后端面试问题整理.docx

    • Java基础 • 熟练的使用Java语言进行面向对象程序设计,熟悉Java语言特性 • 熟悉常用排序,堆栈,树等数据结构和算法 • 熟悉常用集合数据结构(数组、Hashmap、ConcurrentHashMap、HashTable、ArrayList、Vetor...

    优质课件 java基础入门必学 Java SE编程入门教程 全套PPT课件 共30个文件 含辅助资料.rar

    Java SE编程入门教程 java GC(共6页).pptx Java SE编程入门教程 java instanceof(共3页).pptx Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 ...

    【IT十八掌徐培成】Java基础第26天-03.JVM结构-finalize-gc.zip

    【IT十八掌徐培成】Java基础第26天-03.JVM结构-finalize-gc.zip

    Java SE编程入门教程 java判断循环(共79页).ppt

    Java SE编程入门教程 java GC(共6页).pptx Java SE编程入门教程 java instanceof(共3页).pptx Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 ...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    面向对象编程的基础 要了解面向对象编程(OOP)的基本概念,需要理解 OOP 的三个主要概念,它们撑起 了整个 OOP 的框架。这三个概念是:封装、继承性和多态性。除此以外,还需了解对象、 类、消息、接口、及抽象等...

    java基础学习笔记 java整合技术 java工具类.rar

    健壮性:java的健壮性与自动垃圾回收机制有关,自动垃圾回收机制简称GC机制,java语言运行过程中产生的垃圾是自动回收的,不需要程序员关心。 可移植性:java程序可以做到一次编译,到处运行。在Windows操作系统上...

    Java SE编程入门教程 java泛型(共11页).pptx

    Java SE编程入门教程 java GC(共6页).pptx Java SE编程入门教程 java instanceof(共3页).pptx Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 ...

    Java SE编程入门教程 java序列化(共14页).pptx

    Java SE编程入门教程 java GC(共6页).pptx Java SE编程入门教程 java instanceof(共3页).pptx Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 ...

    java基础知识技术总结

    java.lang.System.gc();?/?java.lang.Runtime.gc(); 垃圾回收的建议语句,只能建议而不能强制回收 滨意: System.gc(); 是静态方滕,可直接踃用。 java.lang.Runtime.gc(); 不是静态方滕,不能直接在main方滕里踃用 ...

    java基础学习JVM中GC的算法

    主要介绍了java基础学习JVM中GC的算法,通过图文加深对GC算法思路的理解。

    Java Garbage Collection 与各种GC算法.zip

    标准库丰富:Java拥有庞大的类库,如Java SE(Java Standard Edition)包含基础API,用于开发通用应用程序;Java EE(Java Enterprise Edition)提供企业级服务,如Web服务、EJB等;而Java ME(Java Micro Edition...

Global site tag (gtag.js) - Google Analytics