Java GC 应用了“引用计数算法没"?运行下面代码就知道了:
public class RefernceCountingGC {
public Object instance = null;
private static final int _3MB = 1024 * 1024 * 3;
private byte[] useSpace = new byte[10 * _3MB];
/**
* VM Args:-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
*
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
RefernceCountingGC ins1 = new RefernceCountingGC();
RefernceCountingGC ins2 = new RefernceCountingGC();
ins1.instance = ins2;
ins2.instance = ins1;
ins1 = null;
ins2 = null;
// 进行GC
System.gc();
}
}
运行结果
[GC [PSYoungGen: 31374K->584K(38080K)] 62094K->31304K(125056K), 0.0009580 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (System) [PSYoungGen: 584K->0K(38080K)] [ParOldGen: 30720K->474K(86976K)] 31304K->474K(125056K) [PSPermGen: 2550K->2549K(21248K)], 0.0046570 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
Heap
PSYoungGen total 38080K, used 1962K [0x00000007d58b0000, 0x00000007d8320000, 0x0000000800000000)
eden space 32704K, 6% used [0x00000007d58b0000,0x00000007d5a9aa28,0x00000007d78a0000)
from space 5376K, 0% used [0x00000007d78a0000,0x00000007d78a0000,0x00000007d7de0000)
to space 5376K, 0% used [0x00000007d7de0000,0x00000007d7de0000,0x00000007d8320000)
ParOldGen total 86976K, used 474K [0x0000000780a00000, 0x0000000785ef0000, 0x00000007d58b0000)
object space 86976K, 0% used [0x0000000780a00000,0x0000000780a769b0,0x0000000785ef0000)
PSPermGen total 21248K, used 2559K [0x000000077b800000, 0x000000077ccc0000, 0x0000000780a00000)
object space 21248K, 12% used [0x000000077b800000,0x000000077ba7fe18,0x000000077ccc0000)
很明显:31304K->474K(125056K) 已经回收了,java GC 没有用“引用计数算法”,而是用了跟搜索算法!
分享到:
相关推荐
java,GC,算法,可触及性,stop-the-world是一篇描述GC工作的文章
在Java世界中,JVM(Java虚拟机)是运行所有Java应用程序的核心,它负责解析字节码、管理内存以及执行线程。...通过实践和研究GC算法及种类,开发者能更有效地管理内存,使Java应用程序运行更加高效。
了解并熟练掌握这些GC算法和JVM调优技巧,对于解决性能问题、优化Java应用的运行效率至关重要,同时也是面试中经常被问到的话题。通过实践和理解,开发者可以更好地理解和控制JVM的行为,从而编写出更高效、更稳定的...
### Java GC垃圾回收调优指南 #### 概述 在Java开发过程中,垃圾回收(Garbage Collection, GC)是管理内存资源的关键技术之一。合理的GC配置可以显著提高应用程序的性能和稳定性。本指南旨在帮助开发者深入理解...
本文将详细探讨GC算法、判断对象回收条件、垃圾收集器的工作原理及其调优步骤和常用参数。 首先,GC需要判断哪些对象可以被回收。在JVM中,主要有两种算法用来判断对象的生死:引用计数法和可达性分析算法。引用...
GC算法是JVM中的一种核心机制,它对Java程序的执行效率和内存使用情况产生了深远的影响。 在JVM中,GC算法可以分为两大类:Minor GC和Major GC。Minor GC是对年轻代(Young Generation)的垃圾回收,而Major GC是对...
增量式GC的具体实现算法是Train GC算法,它通过动态调整对象的分组,使得GC可以优先处理那些较旧且较少访问的对象,从而提高回收效率并减少程序暂停时间。 #### 四、分代收集 **4.1 分代理论背景** 分代收集...
另外,设置合适的堆大小和使用适当的GC算法也能显著提升系统性能。 Java提供了一些工具来帮助开发者分析和调优GC,如VisualVM、JConsole、JMX和JFR(Java Flight Recorder)。这些工具可以显示GC活动的实时信息,...
在第一篇文章成为JavaGC专家PartI—深入浅出Java垃圾回收机制中我们学习了不同GC算法的执行过程,GC如何工作,新生代及老年代的基本概念,在JDK7中你应该了解的5种GC类型以及他们的性能如何。在第二篇文章成为JavaGC...
【Java GC机制详解】 Java垃圾回收(Garbage Collection, GC)是Java虚拟机(JVM)的核心特性之一,它负责自动管理程序运行时的内存,有效地避免了内存泄露和溢出的问题。Java GC机制主要涉及以下几个关键方面: 1...
3. **GC策略与调优**:Java提供了多种GC算法,如Serial、Parallel、Concurrent Mark Sweep (CMS) 和 Garbage First (G1)。每种策略都有其适用场景和优缺点。例如,G1适合大内存、低延迟的应用,而CMS则在内存较小、...
Java是一种高性能、跨平台的面向对象编程语言。它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势...
Java虚拟机(JVM)是运行Java字节码的虚拟机进程。它负责在不同操作系统上...以上就是对JavaGC专家指南中提到的知识点的一个全面解析,涵盖了从虚拟机的基本概念到内存管理,再到垃圾回收和性能调优的各个重要方面。
不同的GC算法有其优缺,选择合适的GC算法可以提高Java程序的性能和稳定性。 Java垃圾回收GC机制是Java虚拟机中的一种自动内存管理机制,它可以提高Java程序的开发效率和稳定性。GC机制的实现基于分代收集算法,可以...
Java虚拟机详解04----GC算法和种类【重要】,有助于更深入理解记忆,文字配图片,10分钟让你记住gc工作机制。
在Java编程中,算法是解决问题的核心工具,它们能够有效地处理数据并解决各种计算问题。下面我们将深入探讨几个与Java相关的算法例子,包括求最大公约数、垃圾回收机制、单例模式的实现、寻找数组中重复的数字以及...