下图为jdk1.8的内存结构
分为堆区和非堆区,以下对下图进行分析和记录
堆区
堆区分为young区,和old区,yong又分为2大块,S区(from和to)和eden区,S区是同样大小的两部份,同一时间点下,只会有一块有数据
非堆区
主要是取代1.8之前的方法区,Metaspace 分为ccs和codecache2份,
ccs(压缩类空间),在堆中生成的每个对象都会有一个指向class文件的指针,默认情况下64位系统的指针位64位的,若启用ccs可以使指针变为短指针的class并存入到ccs中,减小所占内存大小
codecache 本地代码和系统执行的一些native代码