`
fns
  • 浏览: 4752 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java - gc

    博客分类:
  • Java
gc 
阅读更多

简述gc

 

 

GC:垃圾回收(Garbage Collection),程序员无需手动管理内存,由虚拟机来自动管理内存。垃圾回收的工作原理很简单,以应用程序的Root为基础,遍历应用程序在 Heap上动态分配的对象,识别这些对象是否被引用,如果没有被引用,可认为是死亡的对象,即垃圾,就可以回收这块内存。需要说明的是,垃圾回收并不是实 时进行的,很好理解,实时地回收垃圾效率很低。举例来说,我们在生活中也是在垃圾多到一定程度再去处理,完全没有必要有一点垃圾就去处理。因此,GC会在 CLR认为需要的时候运行。当然,我们也可以调用System.GC.Collection(),显式的进行垃圾回收,这种场合很少使用,需要说明的是, 即使显式的进行垃圾回收,也不能保证所有未引用的对象被清除掉。

GC 算法:目前常用的GC算法有Reference Counting、Mark Sweep、Copy Collection。

Reference Counting:引用计数,该算法记录对象被引用的次数,增加一个引用加1,删除一个引用减1,当引用的次数为0时,即可认为该对象是垃圾。该算法致命 的缺点是,不能处理循环引用的情况。举例来说,A 引用B,B引用C、C引用A,但是A、B、C都是死亡的对象,不会再被使用。引用计数不能处理这种情况。

Mark Sweep:标记清除,目前主流的虚拟系统.net CLR、Java VM、Rotor 都是采用Mark Sweep 算法,该算法分为两步,第一步从应用程序的根节点开始,标记所有被引用的对象,第二步,遍历Heap,清除没有被标记的对象。该算法的缺点是,需要暂停应 用程序,并且会产生碎片。

Copy Collection:拷贝集合,该算法将内存空间分为相等的两块,每次只使用其中的一块。垃圾回收时,遍历当前使用的一块,把正在使用的对象Copy到 另一块,此算法只是Copy正在使用的对象,因此Copy成本比较低,Copy的过程中进行内存整理,因此不会产生碎片。该算法的缺点很明显:需要两倍大 的内存空间。

Mark Compact:标记整理,该算法结合了Mark Sweep 和 Copy Collection 的优点,也分两步进行:第一步,从应用程序的根节点开始,标记所有被引用的对象,第二步,遍历Heap,清除未被标记的对象,并把标记的对象压缩在一起, 按顺序排放。这种算法解决了碎片问题和需要两倍大的空间问题。

 

转载于:http://nzbbody.blog.163.com/blog/static/511610622011111323618362/

分享到:
评论

相关推荐

    apache-skywalking-java-agent-8.9.0

    SkyWalking Java Agent能够监控JVM的内存使用情况、线程状态、垃圾回收(GC)行为,以及CPU负载等关键指标,帮助开发者识别潜在的性能问题。 3. **分布式追踪**:SkyWalking提供强大的分布式追踪能力,允许开发者...

    JAVA-OPTS参数设置.docx

    JAVA-OPTS参数设置 JAVA-OPTS 是一个变量,用于设置 JVM 相关运行参数。JVM 是 Java Virtual Machine 的缩写,表示 Java 虚拟机。JAVA-OPTS 变量的设置对 Java 应用程序的性能和稳定性具有重要影响。 在设置 JAVA-...

    Java虚拟机详解04----GC算法和种类【重要】 - 千古壹号 - 博客园.html

    Java虚拟机详解04----GC算法和种类【重要】,有助于更深入理解记忆,文字配图片,10分钟让你记住gc工作机制。

    Java 7 - GC cheatsheet

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

    jvm-full-gc调优-jvm-full-gc.zip

    在Java开发中,JVM(Java虚拟机)的性能优化是一项关键任务,特别是对于大型系统而言,频繁的Full GC(垃圾收集)会导致应用暂停时间过长,影响用户体验。本资料"jvm-full-gc调优-jvm-full-gc.zip"显然是针对如何...

    java-1.8.0-openjdk.macos.x86_64.tar.gz

    - 默认垃圾收集器改进,如 G1(Garbage-First)GC,提高了应用性能。 8. **兼容性与性能** - OpenJDK 1.8.0 在 macOS 上通常能提供良好的兼容性和性能,但具体表现可能因硬件配置和应用负载而异。 9. **与其他...

    monitor-java-gc-on-aws-lambda

    在AWS Lambda上监视Java虚拟机垃圾收集这是关于的博客文章中引入的解决方案体系结构的实现。 当您想在上优化Java应用程序以提高性能和成本时,一般的步骤是:构建,评估然后优化! 为此,您需要一个可靠的监视机制。...

    JAVA内存结构-GC-CLASSLOAD

    【JAVA内存结构】 Java内存结构主要分为五个主要区域:堆(JAVA HEAP)、虚拟机栈(JAVA VIRTUAL MACHINE STACKS)、本地方法栈(NATIVE METHOD STACK)、...理解这些内存结构和GC原理对于优化Java应用性能至关重要。

    java-jdk1.8-jdk-8u181-windows-x64.zip

    6. **并行GC优化**:JDK 1.8对垃圾收集器进行了优化,如G1(Garbage-First)GC,提供了更好的性能和更低的停顿时间。 **安装Java JDK 1.8的步骤:** 1. 解压缩下载的zip文件,找到“jdk-8u181-windows-x64.exe”。...

    JAVA-JVM-全面/发展史/GC.zip

    这个压缩包“JAVA-JVM-全面/发展史/GC.zip”显然包含了关于Java、JVM、垃圾回收(GC)及其历史的深入学习资料,特别是通过“JAVA-笔记.pdf”这样的文档形式。 Java的发展史可以追溯到1991年,由Sun Microsystems的...

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

    在本课程"【IT十八掌徐培成】Java基础第26天-03.JVM结构-finalize-gc"中,我们将深入探讨JVM的结构、`finalize`方法以及垃圾收集(Garbage Collection,简称GC)机制。以下是这些主题的详细阐述: 1. JVM结构: - ...

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

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

    深入java虚拟机光盘源码-jvm-gc-logs-analyzer:jvm-gc-logs-analyzer

    深入java虚拟机光盘资源jvm-gc-logs-analyzer 这个项目是一个 Java 虚拟机和垃圾收集器日志分析器。 它专用于 JVM 11 及更高版本(JVM 8 支持正在开发中)。 日志必须采用适当的格式和适当的装饰器,检查最后部分的...

    Java-Interview-超全集合github上评分最高的jiva面试题

    - **垃圾回收机制**:理解GC的工作原理,如新生代、老年代、Minor GC和Full GC的区别。 - **内存泄漏与内存溢出**:如何检测和避免这两种问题。 5. **设计模式** - **常见设计模式**:单例、工厂、观察者、装饰...

    jvm-full-gc.zip

    Java虚拟机(JVM)是Java程序运行的...学习这些知识有助于提升Java应用的性能,避免不必要的Full GC,减少系统停顿时间,提高用户体验。深入理解JVM内存管理,特别是GC机制,对于成为一名优秀的Java开发者至关重要。

    2004-11-GC程序员考试题.rar_gc_程序员考试

    总之,掌握好GC知识对于成为一名合格的程序员至关重要,尤其是对于Java开发者而言,深入理解GC能帮助他们编写出更高效、更稳定的代码。通过系统的复习和实践,相信考生能够在GC程序员考试中取得优异的成绩。

    用于测试jvm gc调优-share-jvm-gc.zip

    Java虚拟机(JVM)是Java程序运行的基础,它的垃圾收集器(GC)是自动管理内存的核心机制。在Java应用程序中,尤其是对于大型系统或高并发环境,进行JVM GC调优是提升性能、减少系统停顿时间的关键步骤。"用于测试...

    thread-gc-分析.7z

    "thread-gc-分析.7z"这个压缩包,显然是为了解析和优化JVM中的线程行为以及垃圾收集机制。本文将围绕这两个主题展开深入讨论。 首先,让我们关注线程。在Java中,线程是执行代码的基本单元,它们共享同一块内存空间...

    JVM内存管理-GC模型-编写GC友好的代码.pdf

    在现代软件开发中,Java虚拟机(JVM)作为一种广泛使用的平台,其内部机制尤其是内存管理和垃圾收集(GC)模型,对提升程序性能和稳定性至关重要。本文将深入探讨Sun Hotspot JVM 6的内存管理与GC模型,并介绍如何...

    Java-jvm.png

    java jvm 优化思维导图,包含java 虚拟机所有知识点,如类加载、垃圾回收(垃圾回收算法、垃圾处理器、GC种类、GC常用参数及配置、GC问题排查等)、内存布局等

Global site tag (gtag.js) - Google Analytics