我们在Java堆内存里创建的对象,都是占用内存资源的,而且内存资源有限。
JVM本身是有垃圾回收机制的,他是一个后台自动运行的线程。这个线程会在后台不断检查JVM堆内存中的各个实例对象,如果某个实例对象没有任何一个方法的局部变量指向他,也没有任何一个类的静态变量,包括常量等地方在指向他。那么这个垃圾回收线程,就会把这个没人指向的实例对象给回收掉,从内存里清除掉,让他不再占用任何内存资源。这样的话,这些不再被人指向的对象实例,即JVM中的“垃圾”,就会定期的被后台垃圾回收线程清理掉,不断释放内存资源。
1.JVM内存分代模型:
年轻代、老年代、永久代。
大部分对象都是存货周期极短的,少数对象是长期存活的。
2.为什么要分成年轻代和老年代?
因为跟垃圾回收有关,对于年轻代里的对象,他们的特点是创建之后很快就会被回收,所以需要用一种垃圾回收算法,对于老年代里的对象,他们的特点是需要长期存在,所以需要另外一种垃圾回收算法,所以需要分成两个区域来放不同的对象。
3.什么是永久代?
JVM里的永久代其实就是我们说的方法区。
其实所谓的永久代,可以认为永久代就是放一些类信息的。
