垃圾回收

2018.5.5 记录学习

  1. 在内存运行的各个部分中,其中程序计数器、虚拟机栈、本地方法栈这三个区域随线程而生,随线程而灭。栈中的栈帧随着方法的进入和退出而执行进栈和出栈

    操作,每个栈帧中分配多少内存基本上在类结构确定下来时就已知的。因此这几个区域的内存分配回收具有确定性。在方法结束和线程结束时,内存自然跟着

    被回收。 

  2. Java 堆和方法区需要内存回收: 一个接口的多个实现类需要的内存不一样,一个方法中的多个分支需要的内存也不一样,我们只有在程序运行期间才知道会创建

    哪些对象。

    方法区: 又称永久代。垃圾回收主要回收两部分内容: 废弃常量和和无用的类。

              1) 已常量池中字面量为例:若字符串abc已经进入常量池,而系统中没有任何String 对象引用该常量,也没有其他地方引用该字面量,

                  那么就认为该字符串可以回收,

              2) 无用的类需要满足3个条件:

                      (1)该类所有的实例都已经被回收,即Java堆中不存在该类的任何实例; 
                      (2)加载该类的ClassLoader已经被回收; 
                      (3)该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。

                      

  3. 

猜你喜欢

转载自www.cnblogs.com/zhangchenglzhao/p/8994829.html