当前位置: 首页 > 面试题库 >

Minor Gc和Full GC 有什么不同呢?

卢枫涟
2023-03-14
本文向大家介绍Minor Gc和Full GC 有什么不同呢? 相关面试题,主要包含被问及Minor Gc和Full GC 有什么不同呢? 时的应答技巧和注意事项,需要的朋友参考一下
  • 新生代 GC(Minor GC):指发生新生代的的垃圾收集动作,Minor GC 非常频繁,回收速度一般也比较快。
  • 老年代 GC(Major GC/Full GC):指发生在老年代的 GC,出现了 Major GC 经常会伴随至少一次的 Minor GC(并非绝对),Major GC 的速度一般会比 Minor GC 的慢 10 倍以上。

测试:

`java public class GCTest {

public static void main(String[] args) {
	byte[] allocation1, allocation2;
	allocation1 = new byte[30900*1024];
	//allocation2 = new byte[900*1024];
}

} ` 通过以下方式运行:

添加的参数:-XX:+PrintGCDetails

运行结果 (红色字体描述有误,应该是对应于 JDK1.7 的永久代):

从上图我们可以看出 eden 区内存几乎已经被分配完全(即使程序什么也不做,新生代也会使用 2000 多 k 内存)。假如我们再为 allocation2 分配内存会出现什么情况呢?

java allocation2 = new byte[900*1024];

简单解释一下为什么会出现这种情况: 因为给 allocation2 分配内存的时候 eden 区内存几乎已经被分配完了,我们刚刚讲了当 Eden 区没有足够空间进行分配时,虚拟机将发起一次 Minor GC.GC 期间虚拟机又发现 allocation1 无法存入 Survivor 空间,所以只好通过 分配担保机制 把新生代的对象提前转移到老年代中去,老年代上的空间足够存放 allocation1,所以不会出现 Full GC。执行 Minor GC 后,后面分配的对象如果能够存在 eden 区的话,还是会在 eden 区分配内存。可以执行如下代码验证:

`java public class GCTest {

public static void main(String[] args) {
	byte[] allocation1, allocation2,allocation3,allocation4,allocation5;
	allocation1 = new byte[32000*1024];
	allocation2 = new byte[1000*1024];
	allocation3 = new byte[1000*1024];
	allocation4 = new byte[1000*1024];
	allocation5 = new byte[1000*1024];
}

}

`

 类似资料:
  • 本文向大家介绍getComputedStyle和element.style有什么不同?相关面试题,主要包含被问及getComputedStyle和element.style有什么不同?时的应答技巧和注意事项,需要的朋友参考一下 element.style 只能获取内联样式属性 getComputedStyle() 可以获取所有样式属性

  • 本文向大家介绍frame和bounds有什么不同?相关面试题,主要包含被问及frame和bounds有什么不同?时的应答技巧和注意事项,需要的朋友参考一下 答案:frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统) bounds指的是:该view在本身坐标系统中 的位置和大小。(参照点是本身坐标系统)  

  • 本文向大家介绍"attribute"和"property"有什么不同?相关面试题,主要包含被问及"attribute"和"property"有什么不同?时的应答技巧和注意事项,需要的朋友参考一下 property 是DOM中的属性,是JavaScript里的对象 可以读取标签自带属性,包括没有写出来的 不能读取attribute设置的属性 获取方式:读:element.property;     

  • 除了上面还有什么不同吗?。如何工作Rowmapper内部和返回类型是列表?。

  • 我知道ElasticSearch是基于Apache Lucene构建的,但我想知道两者之间的显著差异。

  • Apache Mesos和Nomad有什么不同? Mesos不支持联邦或多个故障隔离区。Nomad支持多数据中心和多区域配置,以实现故障隔离和可伸缩性。 不确定这是否仍然适用于Apache Mesos?

  • Dataprep和Dataflow都可以用于ETL任务。事实上,Dataprep似乎使用数据流作业。这是Dataprep提供的工具的唯一区别吗?

  • 我发现docker swarm,kubernetes很相似,然后有docker这是一个公司,上面两个都是docker集群工具。那么这些工具到底是什么,它们之间的区别呢?