每日速记10道java面试题12

其他资料

每日速记10道java面试题01-优快云博客

每日速记10道java面试题02-优快云博客

每日速记10道java面试题03-优快云博客

每日速记10道java面试题04-优快云博客

每日速记10道java面试题05-优快云博客

每日速记10道java面试题06-优快云博客

每日速记10道java面试题07-优快云博客

每日速记10道java面试题08-优快云博客

每日速记10道java面试题09-优快云博客

每日速记10道java面试题10-优快云博客

每日速记10道java面试题11-优快云博客

目录

1.为什么 Java 新生代被划分为 S0、S1和 Eden 区?

2.Java 中的 young Gc、old Gc、full Gc 和 mixed Gc 的区别是什么?

3.什么条件会触发java中的young GC?

4.什么条件会触发java中的full GC?

5.JVM 垃圾回收调优的主要目标是什么?

6.如何对java的垃圾回收进行调优?


1.为什么 Java 新生代被划分为 S0、S1和 Eden 区?

因为新生代中的对象生命周期短,所以十分适合复制算法,按正常思路将新生代一分为二,每次只使用其中一个,然后把GC后存活的对象移动至另一块,然后把老区域的非存活对象清理掉,就能避免碎片空间的产生。

但是一分为二的话空间利用率就只有50%了,为了提高空间利用率,定义了三个区域,Eden 区和两个 Survvor 区,Eden 区+1个Survivor 区可以比二分之一大,提升利用率,默认 Eden 占 80%-个Survivor 占10%。

然后利用两个 Survivor 来交替接收 gc 后存活的对象:
比如当前用 Eden + s0 两块区域,gc 的时候将存活的对象拷贝至 s1,然后清理 Eden 和 s0,接着使用 Eden +s1 作为新的对象分配区域,以此类推。

2.Java 中的 young Gc、old Gc、full Gc 和 mixed Gc 的区别是什么?

1. Young GC(Minor GC):
   当新生代内存存满之后就会触发Young GC,频率高,回收时间短

2. Old GC(Major GC):
   只针对老年代。
   当老年代的内存使用达到一定阈值时,会触发Old GC。Old GC的目的是回收老年代中不再使用的对象,以释放内存空间。Old GC发生的频率相对较低,因为它涉及更全面的内存回收,且可能伴随着更长时间的停顿。

3. Full GC:
   Full GC涉及整个堆的垃圾回收。
   Full GC通常在系统内存紧张,或者老年代空间不足,以及通过某些Java管理命令显式触发时发生。 Full GC的停顿时间通常比Young GC和Old GC要长,因为它需要清理整个堆的内存,这可能导致应用程序的性能问题。

4. Mixed GC:
   Mixed GC是一种特殊类型的GC,它介于Young GC和Full GC之间,主要针对的是新生代和部分老年代(通常是老年代的一部分区域)。
   Mixed GC的目的是在不清理整个堆的情况下,减少老年代的内存使用,同时回收新生代的垃圾。在某些GC实现中,Mixed GC可以作为一种优化手段,以减少Full GC的发生频率和影响。

3.什么条件会触发java中的young GC?

Eden去空间不足、E扥去+Survive区都被装满、部分垃圾回收器在full GC之前。

4.什么条件会触发java中的full GC?

1.老年代满了:老年代空间不够用了。
2.元空间满了:元空间或永久代空间不够用了。
3.调用System.gc():程序要求进行垃圾回收。
4.晋升失败:新生代的对象要移动到老年代,但老年代空间不够
5.分配担保失败:估计新生代要移动的对象会超过老年代剩余空间。

5.JVM 垃圾回收调优的主要目标是什么?

主要从低延迟和高吞吐两个方面去调优,但是往往这两者不可兼得,所以在对GC调优要具体问题具体分析,在批处理作业情况下,可能更注重吞吐量,而在实时系统中,就更注重于低延迟。

6.如何对java的垃圾回收进行调优?

核心思路就是尽量让对象在新生代就回收了,减少对象进入老年代。

但是具体情况还是要根据GC日志去分析,比如发现频繁地Full GC,分析GC日志之后没有内存泄漏,只是Young GC之后有大量对象进入老年代,最终触发Full GC,那就把Survive空间调大就好了。

延伸→怎么看GC日志?

在启动Java应用程序时,可以通过设置JVM参数来启用GC日志记录。以下是一些常用的参数:

  • -XX:+PrintGC:打印GC日志。
  • -XX:+PrintGCDetails:打印GC的详细日志。

以上的jvm内容就结束了,下一篇开始就是mysql的面试题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值