`
smartwgd
  • 浏览: 55750 次
  • 性别: 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_GC垃圾回收调优指南

    #### Java GC基础知识 垃圾回收是一种自动化的内存管理机制,它负责回收不再使用的对象所占用的内存空间。Java虚拟机(JVM)内置了高效的垃圾回收器来执行这项任务。不同的垃圾回收策略适用于不同场景下的应用程序...

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

    ### Java GC工作原理详解 #### 一、引言 在现代软件开发中,Java作为一种广泛使用的编程语言,其强大的功能和高效性深受开发者喜爱。Java的自动内存管理机制是其一大亮点,尤其体现在垃圾收集(Garbage Collection...

    JavaGC调优基础.pdf

    Java垃圾收集(Garbage Collection, 简称GC)是Java编程中一个重要的概念,它负责自动管理程序中的内存,回收不再使用的对象所占用的内存空间。GC调优是优化Java应用程序性能的关键环节,尤其是在大型系统中,正确...

    成为JavaGC专家PartII-如何监控Java垃圾回收

    在Java编程语言中,垃圾回收(Garbage Collection, GC)是一项至关重要的机制,它自动管理内存,释放不再使用的对象,防止内存泄漏。本篇将深入探讨如何监控Java的垃圾回收,帮助开发者提升应用性能和稳定性。 Java...

    java面试基础

    在准备Java面试时,了解基础概念和技术细节至关重要。本文将基于标题"java面试基础"以及提供的标签"源码"和"工具",结合压缩包中的文档名称,对Java面试中的核心知识点进行深入探讨。 首先,Java语言的基础知识是...

    Java GC 专题

    本专题将深入探讨Java GC的基础知识,包括其工作原理、类型、调优策略以及相关工具的使用。 在Java中,内存分为堆内存(Heap)和栈内存(Stack)。堆内存主要用于存储对象实例,而栈内存则存储方法的局部变量。当一...

    jvm 参数及gc详解

    Java虚拟机(JVM)是Java程序运行的基础,它的配置参数和垃圾收集(GC)机制对于优化应用程序性能至关重要。本文将深入探讨JVM参数及其与Java垃圾收集相关的知识。 一、JVM参数详解 JVM参数可以分为三类:启动参数...

    Java零基础基础教程

    ### Java零基础基础教程知识点详解 #### 一、Java简介 - **定义**:Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems公司于1995年推出。 - **特点**: - 跨平台性(Write Once, Run Anywhere,即编译...

    java基础面试考察点.pdf

    Java 基础面试考察点 Java 基础面试考察点是 Java 开发人员必须掌握的知识点,涵盖了 Java 基础知识、多线程、JVM 相关知识点等几个方面。 Java 基础知识点 1. Java 内部集合类:ArrayList 和 LinkedList 的区别...

    Java GC笔记总纲1

    Java垃圾收集(GC)是Java编程中至关重要的一个部分,它自动管理程序的内存,以避免内存泄漏和系统资源耗尽。以下是对标题和描述中提及的知识点的详细阐述: ### 1. 基础知识 #### 1.1 常见的内存溢出 内存溢出是...

    Java GC on HP-UX Itanium

    【Java GC on HP-UX Itanium】和【JDK on HP-UX 简要介绍及性能调试概要】这两个主题涉及到的是Java在HP-UX操作系统上的运行环境、内存管理和性能优化,特别是针对Itanium架构的Java垃圾收集(GC)机制。以下是详细...

    最新的java程序员不可不学的java基础教程

    8. **垃圾回收(GC)**:Java的自动内存管理是其一大优势,理解GC的工作原理和调优策略,有助于编写出性能更优的程序。 9. **泛型**:泛型引入了类型参数的概念,提高了代码的类型安全性和重用性。学习泛型的声明、...

    java入门基础

    Java 基础入门知识点总结 Java 是一种面向对象的高级编程语言,具有简单、面向对象、健壮、多线程、结构中立、跨平台、安全等特点。 Java 应用程序可以运行在不同的操作系统上,如 Windows、Unix、Linux 等。 Java...

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

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

    java 面试基础 java 面试基础

    Java面试基础涵盖了许多核心概念,这些概念是Java程序员在面试中常常被问到的。以下是对这些知识点的详细解释: 1. **面向对象的特征**: - **封装**:封装是面向对象编程的基础,它隐藏了对象的内部细节,只暴露...

    张孝祥老师Java基础加强

    12. **垃圾回收(Garbage Collection)**:Java自动进行内存管理,理解GC的工作原理有助于优化程序性能。 张孝祥老师的"Java基础加强ppt.ppt"可能包含了以上部分或全部内容的详细讲解,通过PPT的形式,以清晰的结构...

    java gc调优

    首先,理解JVM内存结构是GC调优的基础。JVM内存主要分为堆内存(Heap)和非堆内存(Non-Heap),其中堆内存又细分为新生代(Young Generation)、老年代(Tenured Generation或Old Generation)和永久代(Permanent ...

    Java 7 - GC cheatsheet

    Java 7 GC(垃圾回收)参数配置是Java虚拟机(JVM)调优的关键组成部分,它决定了垃圾回收的行为和性能表现。本文将详细介绍Java 7中常见的垃圾回收器和相应的JVM参数,帮助读者更好地理解和使用这些参数进行性能...

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

    这些Java SE编程入门教程涵盖了从基础的变量和数据类型,到面向对象的特性,如类和对象、继承、封装和多态,再到高级主题如垃圾回收和内存管理,为学习Java编程提供了全面的指导。通过深入理解和实践这些概念,初学...

Global site tag (gtag.js) - Google Analytics