回收针对的是堆内存。
将堆内存划分为了2块:新生代和老生代。新生代有划分为伊甸园区和幸存区。对象刚创建的时候是放在新生代的伊甸园区,在伊甸园区经过一次回收之后如果这个对象依然存在,则会挪到幸存区。如果在幸存区经过多次回收,会挪到老生代。老生代的扫描频率是远低于新生代。老生代的对象一旦回收,往往会导致程序的卡顿甚至于崩溃。
发生在新生代的回收---初代回收(minor gc --- garbage collector)
发生在老生代的回收---完全回收(full gc)
如果一个对象在新生代存放不开,会试图直接放入老生代---OutOfMemoryError
网友评论