JVM内存模型,垃圾收集算法,垃圾收集器

一、JVM内存模型

  1. 程序计数器(Program Count Register)
  2. 本地方法栈(Native Stack)
  3. 方法区(Methon Area)
  4. 栈(Stack),存放基本类型数据,进行运算操作,其上数据是可以共享的
  5. 堆(Heap),存放引用类型数据

新生代(Young Generation):分为 Eden 与 2个Survivor Space(幸存区),回收的对象内存比较多,用Copying(复制)算法进行垃圾回收。

由堆内存分配

老年代(Old Generation):进行一次回收很慢,回收的对象比较少,用Mark-Compact(标记-整理)算法回收。由堆内存分配

永久代(Permanent Generation): 存放的是类,方法,常量信息。由方法区内存分配


二、垃圾收集算法

1.Mark-Sweep(标记-清除)算法

   先标记,在清除,会产生垃圾碎片,当要分配大对象内存是,没有可以分配的内存,会导致垃圾回收。

2.Copying(复制)算法

   为了解决标记-清除算法产生的内存碎片问题,而提出的算法,始终存在一块空闲的内存,当发生垃圾回收是,把存活对象复制到空闲内存,把其他内存清除。

3.Mark-Compact(标记-整理)算法

   为了解决复制算法,内存利用率不高问题,而提出的算法,把存活对象向一端移动,把存活对象区域边界的内存清除。

4.Generational Collection(分代收集)算法

   这是目前大部分JVM采用的垃圾回收算法,根据不同的代使用不同的算法。新生代用Copying(复制)算法,老年代Mark-Compact(标记-整理)算法。


三、垃圾收集器

1.串行

2.并行

3.并发



猜你喜欢

转载自blog.csdn.net/bawcwchen/article/details/79979172