Java内存模型

其实谈到java内存模型,之前总是觉得这些是需要背的,但是其实仔细想想,还是有规律可循的。

原生类型和对象类型

分代问题与内存划分

分代假设

大部分新生的对象,很快就会无用,而长时间存活的对象,可能存活更长时间。基于这个分代假设,堆又被分成几块,老年代,新生代,非堆 。

14923529-c0cbbccaa6858ca1.png

新创建的对象,是放在新生代的Eden的,在eden满了或没有空间分配新的对象(或其他情况)的时候,会触发young gc,而在多次young gc后仍然存活的对象,会转移到old区。

1、引出问题:现在知道了,对象是放在堆的,而各个线程都可以访问堆,那么则产生了线程安全问题,