您的位置:首页 > 新闻 > 资讯 > 建设部网站首页_小程序免费制作平台企业中心_郑州网站seo服务_在线分析网站

建设部网站首页_小程序免费制作平台企业中心_郑州网站seo服务_在线分析网站

2025/9/14 21:25:50 来源:https://blog.csdn.net/csdn3043663729/article/details/144190379  浏览:    关键词:建设部网站首页_小程序免费制作平台企业中心_郑州网站seo服务_在线分析网站
建设部网站首页_小程序免费制作平台企业中心_郑州网站seo服务_在线分析网站

其他资料

每日速记10道java面试题01-CSDN博客

每日速记10道java面试题02-CSDN博客

每日速记10道java面试题03-CSDN博客

每日速记10道java面试题04-CSDN博客

每日速记10道java面试题05-CSDN博客

每日速记10道java面试题06-CSDN博客

每日速记10道java面试题07-CSDN博客

每日速记10道java面试题08-CSDN博客

每日速记10道java面试题09-CSDN博客

每日速记10道java面试题10-CSDN博客

每日速记10道java面试题11-CSDN博客

目录

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的面试题。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com