Java GC回收机制

Posted 灵犀一脚C

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java GC回收机制相关的知识,希望对你有一定的参考价值。

优秀Java程序员必须了解的GC工作原理

 

一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能。

一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能。本篇文章首先简单介绍GC的工作原理之后,然后再对GC的几个关键问题进行深入探讨,最后提出一些Java程序设计建议,从GC角度提高Java程序的性能。

GC的基本原理

Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放。

对于程序员来说,分配对象使用new关键字;释放对象时,只要将对象所有引用赋值为null,让程序不能够再访问到这个对象,我们称该对象为\\"不可达的\\".GC将负责回收所有\\"不可达\\"对象的内存空间。

对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象(详见 参考资料1 )。通过这种方式确定哪些对象是\\"可达的\\",哪些对象是\\"不可达的\\".当GC确定一些对象为\\"不可达\\"时,GC就有责任回收这些内存空间。但是,为了保证GC能够在不同平台实现的问题,Java规范对GC的很多行为都没有进行严格的规定。例如,对于采用什么类型的回收算法、什么时候进行回收等重要问题都没有明确的规定。因此,不同的JVM的实现者往往有不同的实现算法。这也给Java程序员的开发带来行多不确定性。本文研究了几个与GC工作相关的问题,努力减少这种不确定性给Java程序带来的负面影响。

增量式GC( Incremental GC )

GC在JVM中通常是由一个或一组进程来实现的,它本身也和用户程序一样占用heap空间,运行时也占用CPU.当GC进程运行时,应用程序停止运行。因此,当GC运行时间较长时,用户能够感到 Java程序的停顿,另外一方面,如果GC运行时间太短,则可能对象回收率太低,这意味着还有很多应该回收的对象没有被回收,仍然占用大量内存。因此,在设计GC的时候,就必须在停顿时间和回收率之间进行权衡。一个好的GC实现允许用户定义自己所需要的设置,例如有些内存有限有设备,对内存的使用量非常敏感,希望GC能够准确的回收内存,它并不在意程序速度的放慢。另外一些实时网络游戏,就不能够允许程序有长时间的中断。增量式GC就是通过一定的回收算法,把一个长时间的中断,划分为很多个小的中断,通过这种方式减少GC对用户程序的影响。虽然,增量式GC在整体性能上可能不如普通GC的效率高,但是它能够减少程序的最长停顿时间。

Sun JDK提供的HotSpot JVM就能支持增量式GC.HotSpot JVM缺省GC方式为不使用增量GC,为了启动增量GC,我们必须在运行Java程序时增加-Xincgc的参数。HotSpot JVM增量式GC的实现是采用Train GC算法。它的基本想法就是,将堆中的所有对象按照创建和使用情况进行分组(分层),将使用频繁高和具有相关性的对象放在一队中,随着程序的运行,不断对组进行调整。当GC运行时,它总是先回收最老的(最近很少访问的)的对象,如果整组都为可回收对象,GC将整组回收。这样,每次GC运行只回收一定比例的不可达对象,保证程序的顺畅运行。

详解finalize函数

finalize是位于Object类的一个方法,该方法的访问修饰符为protected,由于所有类为Object的子类,因此用户类很容易访问到这个方法。由于,finalize函数没有自动实现链式调用,我们必须手动的实现,因此finalize函数的最后一个语句通常是super.finalize()。通过这种方式,我们可以实现从下到上实现finalize的调用,即先释放自己的资源,然后再释放父类的资源。

根据Java语言规范,JVM保证调用finalize函数之前,这个对象是不可达的,但是JVM不保证这个函数一定会被调用。另外,规范还保证finalize函数最多运行一次。

很多Java初学者会认为这个方法类似与C++中的析构函数,将很多对象、资源的释放都放在这一函数里面。其实,这不是一种很好的方式。原因有三,其一,GC为了能够支持finalize函数,要对覆盖这个函数的对象作很多附加的工作。其二,在finalize运行完成之后,该对象可能变成可达的,GC还要再检查一次该对象是否是可达的。因此,使用 finalize会降低GC的运行性能。其三,由于GC调用finalize的时间是不确定的,因此通过这种方式释放资源也是不确定的。

通常,finalize用于一些不容易控制、并且非常重要资源的释放,例如一些I/O的操作,数据的连接。这些资源的释放对整个应用程序是非常关键的。在这种情况下,程序员应该以通过程序本身管理(包括释放)这些资源为主,以finalize函数释放资源方式为辅,形成一种双保险的管理机制,而不应该仅仅依靠finalize来释放资源。

下面给出一个例子说明,finalize函数被调用以后,仍然可能是可达的,同时也可说明一个对象的finalize只可能运行一次。

复制代码
 1 class MyObject{
 2 
 3 Test main; //记录Test对象,在finalize中时用于恢复可达性
 4 
 5 public MyObject(Test t)
 6 
 7 {
 8 
 9 main=t; //保存Test 对象
10 
11 }
12 
13 protected void finalize()
14 
15 {
16 
17 main.ref=this;// 恢复本对象,让本对象可达
18 
19 System.out.println(\\"This is finalize\\");//用于测试finalize只运行一次
20 
21 }
22 
23 }
24 
25 class Test {
26 
27 MyObject ref;
28 
29 public static void main(String[] args) {
30 
31 Test test=new Test();
32 
33 test.ref=new MyObject(test);
34 
35 test.ref=null; //MyObject对象为不可达对象,finalize将被调用
36 
37 System.gc();
38 
39 if (test.ref!=null) System.out.println(\\"My Object还活着\\");
40 
41 }
42 
43 }
44 
45 运行结果:
46 
47 This is finalize
48 
49 MyObject还活着
复制代码

 



此例子中,需要注意的是虽然MyObject对象在finalize中变成可达对象,但是下次回收时候,finalize却不再被调用,因为finalize函数最多只调用一次。


程序如何与GC进行交互

Java2增强了内存管理功能,增加了一个java.lang.ref包,其中定义了三种引用类。这三种引用类分别为SoftReference、WeakReference和 PhantomReference.通过使用这些引用类,程序员可以在一定程度与GC进行交互,以便改善GC的工作效率。这些引用类的引用强度介于可达对象和不可达对象之间。

创建一个引用对象也非常容易,例如如果你需要创建一个Soft Reference对象,那么首先创建一个对象,并采用普通引用方式(可达对象);然后再创建一个SoftReference引用该对象;最后将普通引用设置为null.通过这种方式,这个对象就只有一个Soft Reference引用。同时,我们称这个对象为Soft Reference 对象。

Soft Reference的主要特点是据有较强的引用功能。只有当内存不够的时候,才进行回收这类内存,因此在内存足够的时候,它们通常不被回收。另外,这些引用对象还能保证在Java抛出OutOfMemory 异常之前,被设置为null.它可以用于实现一些常用图片的缓存,实现Cache的功能,保证最大限度的使用内存而不引起OutOfMemory.以下给出这种引用类型的使用伪代码;

复制代码
 1 //申请一个图像对象
 2 
 3 Image image=new Image();//创建Image对象
 4 
 5 …
 6 
 7 //使用 image
 8 
 9 …
10 
11 //使用完了image,将它设置为soft 引用类型,并且释放强引用;
12 
13 SoftReference sr=new SoftReference(image);
14 
15 image=null;
16 
17 …
18 
19 //下次使用时
20 
21 if (sr!=null) image=sr.get();
22 
23 else{
24 
25 //由于GC由于低内存,已释放image,因此需要重新装载;
26 
27 image=new Image();
28 
29 sr=new SoftReference(image);
30 
31 }
复制代码

 



Weak引用对象与Soft引用对象的最大不同就在于:GC在进行回收时,需要通过算法检查是否回收Soft引用对象,而对于Weak引用对象,GC总是进行回收。Weak引用对象更容易、更快被 GC回收。虽然,GC在运行时一定回收Weak对象,但是复杂关系的Weak对象群常常需要好几次GC的运行才能完成。Weak引用对象常常用于Map结构中,引用数据量较大的对象,一旦该对象的强引用为null时,GC能够快速地回收该对象空间。

Phantom引用的用途较少,主要用于辅助 finalize函数的使用。Phantom对象指一些对象,它们执行完了finalize函数,并为不可达对象,但是它们还没有被GC回收。这种对象可以辅助finalize进行一些后期的回收工作,我们通过覆盖Reference的clear()方法,增强资源回收机制的灵活性。

一些Java编码的建议

根据GC的工作原理,我们可以通过一些技巧和方式,让GC运行更加有效率,更加符合应用程序的要求。以下就是一些程序设计的几点建议。

1.最基本的建议就是尽早释放无用对象的引用。大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为null.我们在使用这种方式时候,必须特别注意一些复杂的对象图,例如数组,队列,树,图等,这些对象之间有相互引用关系较为复杂。对于这类对象,GC回收它们一般效率较低。如果程序允许,尽早将不用的引用对象赋为null.这样可以加速GC的工作。

2.尽量少用finalize函数。finalize函数是Java提供给程序员一个释放对象或资源的机会。但是,它会加大GC的工作量,因此尽量少采用finalize方式回收资源。

3.如果需要使用经常使用的图片,可以使用soft应用类型。它可以尽可能将图片保存在内存中,供程序调用,而不引起OutOfMemory.

4.注意集合数据类型,包括数组,树,图,链表等数据结构,这些数据结构对GC来说,回收更为复杂。另外,注意一些全局的变量,以及一些静态变量。这些变量往往容易引起悬挂对象(dangling reference),造成内存浪费。

5.当程序有一定的等待时间,程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。使用增量式GC可以缩短Java程序的暂停时间。

 
=========================================================================================
=========================================================================================

 

 

目录

  1. Java垃圾回收概况
  2. Java内存区域
  3. Java对象的访问方式
  4. Java内存分配机制
  5. Java GC机制
  6. 垃圾收集器

Java垃圾回收概况

  Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。概括地说,该机制对 JVM(Java Virtual Machine)中的内存进行标记,并确定哪些内存需要回收,根据一定的回收策略,自动的回收内存,永不停息(Nerver Stop)的保证JVM中的内存空间,放置出现内存泄露和溢出问题。

  关于JVM,需要说明一下的是,目前使用最多的Sun公司的JDK中,自从 1999年的JDK1.2开始直至现在仍在广泛使用的JDK6,其中默认的虚拟机都是HotSpot。2009年,Oracle收购Sun,加上之前收购 的EBA公司,Oracle拥有3大虚拟机中的两个:JRockit和HotSpot,Oracle也表明了想要整合两大虚拟机的意图,但是目前在新发布 的JDK7中,默认的虚拟机仍然是HotSpot,因此本文中默认介绍的虚拟机都是HotSpot,相关机制也主要是指HotSpot的GC机制。

  Java GC机制主要完成3件事:确定哪些内存需要回收,确定什么时候需要执行GC,如何执行GC。经过这么长时间的发展(事实上,在Java语言出现之前,就有 GC机制的存在,如Lisp语言),Java GC机制已经日臻完善,几乎可以自动的为我们做绝大多数的事情。然而,如果我们从事较大型的应用软件开发,曾经出现过内存优化的需求,就必定要研究 Java GC机制。

  学习Java GC机制,可以帮助我们在日常工作中排查各种内存溢出或泄露问题,解决性能瓶颈,达到更高的并发量,写出更高效的程序。

  我们将从4个方面学习Java GC机制,1,内存是如何分配的;2,如何保证内存不被错误回收(即:哪些内存需要回收);3,在什么情况下执行GC以及执行GC的方式;4,如何监控和优化GC机制。

Java内存区域

  了解Java GC机制,必须先清楚在JVM中内存区域的划分。在Java运行时的数据区里,由JVM管理的内存区域分为下图几个模块:

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uQeCDK/wD8TXTeGdHm0TTGtp5EeR5TISmcDIA7/StiitKeHp03eJnUxFSorSCiiitzAKKKKACiiigArjPih/yLVv8A9fi/+gPXZ1xnxQ/5Fq3/AOvxf/QHrSl8aIqfCzovD3/ItaX/ANecP/oAoo8Pf8i1pf8A15w/+gCioluylscZ4Q/5KTrn/bx/6OWvRK878If8lJ1z/t4/9HLXola1viIpbBRRRWJoFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXGfFD/AJFq3/6/F/8AQHrs64z4of8AItW//X4v/oD1pS+NEVPhZ0Xh7/kWtL/684f/AEAUUeHv+Ra0v/rzh/8AQBRUS3ZS2OM8If8AJSdc/wC3j/0cteiV534Q/wCSk65/28f+jlr0Sta3xEUtgooorE0CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArjPih/yLVv/ANfi/wDoD12dcZ8UP+Rat/8Ar8X/ANAetKXxoip8LOi8Pf8AItaX/wBecP8A6AKKPD3/ACLWl/8AXnD/AOgCioluylscZ4Q/5KTrn/bx/wCjlr0SvO/CH/JSdc/7eP8A0cteiVrW+IilsFFFFYmgUUUUAISFBZ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

以上是关于Java GC回收机制的主要内容,如果未能解决你的问题,请参考以下文章

java中垃圾回收机制的原理

Unity2019 增量式GC(使用时间片段执行GC,减少卡顿)

Unity2019 增量式GC(使用时间片段执行GC,减少卡顿)

怎么验证java的gc是不是会回收了某个不用的对象了。我有段代码有性能问题,需要调优,想知道怎么看

java——GC回收机制

Java垃圾回收机制(GC)详解