准备

讲一下JVM(虚拟机)的内存模型

https://blog.csdn.net/javazejian/article/details/72772461

Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入何时对另一个线程可见。 从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中, 每个线程都有一个私有的本地内存(local memory) 本地内存中存储了该线程以读/写共享变量的副本。

讲一讲新生代的内存划分以及新生代和老年代的垃圾回收

alt 新生代就是用来放新生对象的区域 占大概是1/3; 老年代就是用来放应用程序中存活时间比较长的对象2/3; 新生代又分为 eden survivor from 和survivor to;

发生在新生代中的minorGC

  1. Eden中创建新对象,如果空间不够 那么就用到了minorGC ,即清除掉无用对象,同时讲存活的对象移到from或者to的空间里,这时对象可以在 eden和from空间里
  2. 如果 eden和from空间里都用不到的话,用分配担保机制将对象移到老年代

发生在老年代的major GC也叫 fullGC

MajorGC采用标记清除算法:首先扫描一次所有老年代,标记出存活的对象,然后回收没有标记的对象。MajorGC的耗时比较长,因为要扫描再回收。MajorGC 会产生内存碎片,为了减少内存损耗,我们一般需要进行合并或者标记出来方便下次直接分配。当老年代也满了装不下的时候,就会抛出OOM (Out of Memory)异常。

全部评论

相关推荐

但听说转正率很低,我现在有在实习了,好纠结要不要去
熬夜脱发码农:转正率低归低,但是实习的经历你可以拿着,又不是说秋招不准备了
点赞 评论 收藏
分享
仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务