2018.5.5 记录学习
1. 在内存运行的各个部分中,其中程序计数器、虚拟机栈、本地方法栈这三个区域随线程而生,随线程而灭。栈中的栈帧随着方法的进入和退出而执行进栈和出栈
操作,每个栈帧中分配多少内存基本上在类结构确定下来时就已知的。因此这几个区域的内存分配回收具有确定性。在方法结束和线程结束时,内存自然跟着
被回收。
2. Java 堆和方法区需要内存回收: 一个接口的多个实现类需要的内存不一样,一个方法中的多个分支需要的内存也不一样,我们只有在程序运行期间才知道会创建
哪些对象。
方法区: 又称永久代。垃圾回收主要回收两部分内容: 废弃常量和和无用的类。
1) 已常量池中字面量为例:若字符串abc已经进入常量池,而系统中没有任何String 对象引用该常量,也没有其他地方引用该字面量,
那么就认为该字符串可以回收,
2) 无用的类需要满足3个条件:
(1)该类所有的实例都已经被回收,即Java堆中不存在该类的任何实例;
(2)加载该类的ClassLoader已经被回收;
(3)该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。
扫描二维码关注公众号,回复:
113018 查看本文章
3.