美文网首页
Java垃圾回收

Java垃圾回收

作者: ifanfaniu | 来源:发表于2016-09-04 00:27 被阅读0次

    Java虚拟机(Java Virtual Machine, 缩写JVM)

    Java程序内存主要分为:堆和非堆;

    JVM管理堆和非堆。堆是运行时数据区域(所有类实例和数组的内存均从此处分配)非堆是JVM自用的内存区域(分为1.方法区 2.JVM内部处理或优化所需的内存 3. 每个类结构,方法和构造器的代码存储区)

    GC(Garbage Collection 垃圾收集器)Java垃圾回收机制是由GC来实现的,GC是后台的守护进程。它的特别之处是它是一个低优先级进程,但是可以根据内存的使用情况动态的调整它的优先级。因此,它是在内存中低到一定限度时才会自动运行,从而实现对内存的回收。这就是垃圾回收的时间不确定的原因。GC主要回收的内存是堆中的。

    堆内存

    堆内存分为:新生代(NewGeneration)和老年代(OldGeneration)其大小比为1:2

    新生代内分为:一个Eden区和两个Survivor区(分别叫from,to)其比例为Eden : from : to = 8 : 1 : 1

    新生代内存活对象少其GC:复制(copying) 算法

    老年代内存活对象多其GC:标记-整理(Mark-Compact)算法

    新生代和老年代GC:分代收集算法

    GC_FOR_MALLOC:表示是在堆上分配对象时内存不足触发的GC

    GC_CONCURRENT:当我们的应用程序的堆内存达到一定量,或者可以理解为快要满的时候系统会自动触发的释放内存的GC操作

    GC_EXPLICIT:表示是应用程序调用System.gc, VMRuntime.gc接口或者收到SIGUSRI信号时触发的GC

    GC_BEFORE_OOM:表示是在准备抛OOM异常之前进行的最后努力而触发的GC

    相关文章

      网友评论

          本文标题:Java垃圾回收

          本文链接:https://www.haomeiwen.com/subject/pgllettx.html