【拥抱大厂系列】百度面试官问过的 “JVM内存分配与回收策略原理”,我用这篇文章搞定了
点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了3个月总结的一线大厂Java面试总结,本人已拿腾讯等大厂offer。 在前面的一篇文章 深入理解Java虚拟机-如何利用VisualVM进行性能分析 中讲到了一些关于JVM调优的知识,但是,其实,还是有一些问题没有非常清楚的可以回答的,这里先给出几个问题,然后,我们再展开这篇文章需要讲解的知识。 我们生成的对象最开始在哪分配?Eden?Survivor?还是老年代呢? 进入到老年代需要满足什么条件呢? 接下来,我们就带着这两个问题展开全文。 1 对象优先在哪分配 其实,通过前面几篇文章的讲解,这个问题其实已经见怪不怪了,在大多数的情况下,对象都是在新生代 Eden区 分配的,在前面的文章我们提到,在Eden区中如果内存不够分配的话,就会进行一次 Minor GC 。同时,我们还知道年轻代中默认下 Eden:Survivor0:Survivor2 = 8:1:1 ,同时,还能通过参数 -XX:SurvivorRatio 来设置这个比例(关于这些参数的分析都可以查看这篇文章: 深入理解Java虚拟机-常用vm参数分析 )。 下面我们通过一个例子来分析是不是这样的。 1.1 实例 给定JVM参数:-Xms40M -Xmx40M