垃圾回收机制学习01

推荐好文:

1.图解 Java 垃圾回收机制,写得非常好!

2.成为 Java GC 专家(1):深入浅出 Java 垃圾回收机制

3.成为 Java GC 专家( 2 ):如何监控 Java 垃圾回收机制

4.成为 Java GC 专家( 3 ): 如何优化 Java 垃圾回收机制

5.java垃圾回收算法

6.Java垃圾回收机制

7.面试总结:java程序执行过程 + JVM内存管理 + GC垃圾回收机制

 

带着以下问题去学习垃圾回收机制:(垃圾回收器)

1.什么是垃圾回收机制? 什么是自动垃圾回收?

2. java垃圾回收算法

3. 哪些内存需要回收?——who

4.什么时候回收?——when

5.怎么回收?——how

6.怎么减少gc的开销,优化.

7.JVM内存划分(内存管理)

8.jvm怎么配置gc的参数

9.常用垃圾回收机制的基本过程/流程。(怎么回收)

(1).标记-清除-压缩

eg:第一步:标记 
(垃圾回收的第一步是标记。垃圾回收器此时会找出哪些内存在使用中(程序中有指针指向),还有哪些不是(没有被任何指针给指向)。)
第二步:清除 和压缩
(清除是指 删掉标记出的未引用对象。)
(压缩是指 为了提升性能,删除了未引用对象后,还可以将剩下的已引用对象放在一起(压缩),这样就能更简单快捷地分配新对象了。 )

(2) 复制算法

将内存分为两块,每次只使用一块。当这一块内存满了,就将还存活的对象复制到另一块上,并且严格按照内存地址排列,然后把已使用的那块内存统一回收。

优点是:能够得到连续的内存空间
缺点是:浪费了一半内存

(3)分代算法

在java中,把内存中的对象按生命长短分为:

  • 新生代:活不了多久就go die 了,比如局部变量
  • 老年代:老不死的,活的久但也会go die,比如一些生命周期长的对象
  • 永久代:千年王八万年龟,不死,比如加载的class信息

    有一点需要注意:新生代和老年代存储在java虚拟机堆上 ;永久代存储在方法区上


补充关键字: 

内存管理意识        程序跑起来就不断吃资源       内存泄漏      资源释放

垃圾自动回收    内存分配和管理    可达性分析

.

猜你喜欢

转载自www.cnblogs.com/PinkPink/p/11016398.html