`

JVM垃圾回收机制(一)--垃圾回收回收什么

    博客分类:
  • JVM
阅读更多

1.垃圾回收

垃圾回收的历史要比Java语言久远的多,MIT的LISP是第一门真正使用内存动态分配和垃圾收集技术的语言(LISP名称源自列表处理(LISt Processing)的英语缩写,由来自麻省理工学院的人工智能研究先驱约翰·麦卡锡(John McCarthy)在1958年基于λ演算所创造的计算机程序设计语言).

说到垃圾回收(Garbage Collection,简称GC),就要说下垃圾回收是收集什么,何时回收,虚拟机是怎么通过垃圾收集器进行自动垃圾回收的.

1.1 垃圾回收收集什么

按照标准的说法,垃圾回收是一个监控堆内存区域,识别正在使用中或不使用的对象,并对不使用的对象进行回收的过程.在C语言中,垃圾回收是手动完成的(需要我们在程序中定义),而Java语言是通过垃圾收集器去自动完成的.说白了,垃圾回收就是回收未被引用的对象.既然要回收未被引用的对象,那我们就得说说何为引用的对象(使用中的对象).

何谓使用中的对象?所谓使用中的对象,就是在程序中仍然存在该对象的引用.

说到对象的引用,我们就不得不说说对象引用是何物.

1.1.1 对象的引用

在JDK1.2之前,Java中对于引用类型的定义很狭隘,它指如果引用(reference)类型的数据中存储着另外一块内存的起始地址,那么就表示这块内存代表着一个引用.

在JDK1.2之后,Java对引用的概念进行了扩展,分为强引用,软引用,弱引用,虚引用.

①强引用(Strong Reference):就是我们在代码中很常见的Object obj = new Object()这类的引用,其中obj就指向在堆内存中分配的Object对象.只要强引用存在,垃圾收集器就不会回收该对象.

②软引用(Soft Reference):用来描述一些有用但非必须的对象(像不像曹操说的鸡肋,食之无味弃之可惜).在JDK1.2之后,提供了java.lang.ref.SoftReference类来实现软引用,如

SoftReference<String> softRf = new SoftReference<String>(new String("helloworld"));

使用softRf.get()就可以获取到引用的对象.这里softRf就是一个软引用.软引用引用的对象,在内存空间不足的情况下,会被回收.

③弱引用(Weak Reference):弱引用也来描述非必须对象,它比软引用还弱.在JDK1.2之后,提供了java.lang.ref.WeakReference类来实现弱引用.如

WeakReference<String> weakRf = new WeakReference<String>(new String("helloworld"));     

使用weakRf.get()就可以获取到引用的对象.其中weakRf就是一个弱引用.弱引用引用的对象,在垃圾回收器回收工作的时候,就会被回收.

④虚引用(Phantom Reference):听这名字,就像影子似的,所以它也叫幽灵引用,是最弱的一种引用关系.在JDK1.2之后,提供了java.lang.ref.PhantomReference类表示虚引用.但是用法跟上面不一样哈.

虚引用必须与引用队列(ReferenceQueue)一起使用.

如:ReferenceQueue<String> rfQueue = new ReferenceQueue<String>();

  PhantomReference<String> phantomRf = new PhantomReference<String>(new String("helloworld"), rfQueue);

使用phantomRf.get()可以获取到引用的对象.虚引用并不影响它引用的对象的生命周期,使用虚引用的唯一作用就是在垃圾收集器工作的时候,告诉系统"我要走了,拜拜".

分享到:
评论

相关推荐

    JVM垃圾回收机制.xmind

    自己学习总结JVM垃圾回收机制的结构图,一起分享!!!

    JVM垃圾回收机制

    在Java编程中,JVM(Java虚拟机)的垃圾回收机制是自动管理内存的重要部分。垃圾回收机制负责回收那些不再被程序使用、即无法达到的对象所占用的内存空间。我们通过深入探讨以下几个关键点来理解JVM垃圾回收机制的...

    JVM垃圾回收机制与GC性能调优

    Java虚拟机(JVM)的垃圾回收(GC)机制是Java程序高效运行的关键部分,它自动管理内存,释放不再使用的对象以避免内存泄漏。本文主要探讨JVM堆内存的结构和GC的工作原理,以及如何进行性能调优。 JVM堆是Java应用...

    JVM的工作原理及垃圾回收机制介绍

    ### JVM工作原理及垃圾回收机制详解 #### 一、JVM概述及原理 **1.1 JVM概述** Java Virtual Machine (JVM),即Java虚拟机,是一种虚构的计算机,在实际的计算机硬件上仿真模拟出的一套完整的计算机系统,用于执行...

    jvm内存模型以及垃圾回收机制.pptx

    Java虚拟机(JVM)内存模型和垃圾回收机制是Java开发中至关重要的概念。本文将深入探讨这两个主题,帮助理解JVM如何管理和优化内存。 **一、类加载器和双亲委派机制** 类加载器是JVM的一个组成部分,负责加载Java...

    JVM的垃圾回收机制详解和调优

    理解并优化JVM的垃圾回收机制对于提升Java应用的性能至关重要。 一、垃圾回收的基本概念 1. 对象生命周期:当一个对象被创建后,它会经历新生、壮年、老年代等阶段。垃圾回收主要关注的是不再被引用的对象,即...

    jvm垃圾回收机制总结

    本文将深入探讨JVM的垃圾回收机制,包括其原理、类型以及在实际开发中的应用。 一、垃圾回收的原理 1. 对象引用计数:一种简单的垃圾回收策略,为每个对象分配一个引用计数器,当有引用指向该对象时,计数器加一,...

    jvm垃圾回收机制:.md

    全面概述jvm垃圾回收机制的功能、各部分组成及各部分算法实现

    垃圾回收垃圾回收垃圾回收

    在Java编程语言中,垃圾回收(Garbage Collection, GC)是一项至关重要的机制,它自动管理程序中的内存,释放不再使用的对象所占据的空间,以防止内存泄漏。垃圾回收是Java虚拟机(JVM)的一个核心特性,它使得...

    JVM垃圾回收机制(GC).xmind

    JVM垃圾回收机制(GC).xmind

    JVM垃圾回收器和内存分配策略.zip

    本篇文章将深入探讨JVM的垃圾回收机制以及内存分配策略。 首先,我们需要了解JVM的内存模型。在Java中,内存主要分为堆(Heap)和栈(Stack)。堆是所有对象实例的存储区域,而栈则用于存储方法调用时的局部变量。...

    16_Java高级_JVM垃圾回收机制.avi

    16_Java高级_JVM垃圾回收机制

    Java+JVM+垃圾回收机制

    ### Java+JVM+垃圾回收机制 #### 一、哪些垃圾是需要回收的? 在Java虚拟机中,垃圾回收机制负责自动管理内存空间,确保不再使用的对象能够被及时释放,以便于新对象的分配。这一过程的核心在于识别哪些对象不再...

    09 Java基础-JVM垃圾回收-玉峰1

    本节将深入探讨JVM垃圾回收机制以及与之相关的工具和概念。 1. **JVM内存模型** JVM内存分为堆内存和栈内存,其中堆内存主要用于存储对象实例,而栈内存则用于存储方法调用时的局部变量。堆内存又分为年轻代和老...

    JVM历史发展和内存回收笔记

    本文将详细探讨JVM的发展历程以及内存管理中的垃圾回收机制。 一、JVM的历史发展 1. **早期阶段**:1995年,Sun Microsystems发布了Java的第一个版本,JVM作为其核心组成部分,主要应用于嵌入式设备和网络应用。初...

    java高级之垃圾回收机制

    其中,垃圾回收机制(Garbage Collection, GC)是Java虚拟机(JVM)的一项重要特性,它能够自动检测并回收不再使用的对象占用的内存空间,从而有效避免了内存泄漏问题。本文将详细介绍Java中的垃圾回收机制及其工作原理...

    JVM 垃圾回收(GC)

    理解JVM垃圾回收机制对于优化Java应用性能至关重要。 1. **垃圾回收的基本概念** - **对象生命周期**:在Java中,对象的生命周期包括创建、使用和销毁。当对象不再被引用时,就被认为是“垃圾”。 - **垃圾回收器...

    JVM垃圾回收机制(GC)

    JVM垃圾回收机制(GC) 引入:我们都知道,栈内存中方法运行完毕后会有弹栈的操作,不会产生垃圾,而堆内存中却没有这种操作,当堆内存中很多无用的成员变量、对象等等积压到一定程度时,就会发生堆内存溢出的一个错误...

    Java垃圾回收机制总结

    Java垃圾回收机制是Java虚拟机(JVM)中的一种机制,用于防止内存泄露和有效地使用空闲的内存。垃圾回收机制的主要目的是为了回收无用的对象占用的内存空间,使该空间可被程序再次使用。 垃圾回收机制的算法有多种...

Global site tag (gtag.js) - Google Analytics