Java面试题——进阶篇

本文深入探讨了JVM调优的重要性、原则及步骤,强调了不应过早优化。介绍了垃圾回收机制,包括如何确定对象为垃圾、判断对象存活的算法以及常用的垃圾回收算法如标记-清除、标记-整理和复制算法。最后,概述了分代收集算法和各种典型的垃圾收集器,如Serial、ParNew、Parallel Scavenge、Parallel Old、CMS和G1,强调了它们的设计目标和适用场景。
摘要由CSDN通过智能技术生成

1.JVM调优

http://t.csdn.cn/PMqyu

1.如果使用合理的 JVM 参数配置,在大多数情况应该是不需要调优的,

JVM 经过这么多年的发展和验证,整体是非常健壮的。个人认为99%的情况下,基本用不到 JVM 调优。

通常来说,我们的 JVM 参数配置大多还是会遵循 JVM 官方的建议,例如:-XX:NewRatio=2,年轻代:老年代=1:2,堆内存设置为物理内存的3/4左右,等等

JVM 参数的默认(推荐)值都是经过 JVM 团队的反复测试和前人的充分验证得出的比较合理的值,因此通常来说是比较靠谱和通用的,一般不会出大问题。

当然,更重要的是,大部分的应用数据量不到几万,这种低压环境下,想让 JVM 出问题,说实话也挺难的。

大部分同学更常遇到的应该是自己的代码 bug 导致 OOM、CPU load高、GC频繁啥的,这些场景也基本都是代码修复即可,通常不需要动 JVM。

当然,俗话说得好,凡事无绝对,还是有一小部分场景,是可能需要用到 JVM 调优的。具体哪些场景,我们在下面介绍。

值得一提的是,我们这边所说的 JVM 调优更多的是针对自己的业务场景对 JVM 参数进行优化调整,使其更适合我们的业务,而不是指对 JVM 源码的改动。

2.忌过早优化。《计算机程序设计艺术》的作者高德纳(Donald Ervin Knuth)曾说过一句经典的话:真正的问题是,程序猿在错误的地方和错误的时间花了太多的时间担心效率问题;过早的优化是编程中所有(或者至少是大部分)罪恶的根源。

忌过早并不是说就完全不管,比较正确的做法应该是给核心服务的一些重要 JVM 指标配上监控告警,当指标出现波动或者异常时,能及时介入排查。

3.优化步骤

1.分析和定位当前系统的瓶颈

1)CPU指标

查看占用CPU最多的进程

查看占用CPU最多的线程

查看线程堆栈快照信息

分析代码执行热点

查看哪个代码占用CPU执行时间最长

查看每个方法占用CPU时间比例

2)JVM 内存指标

查看当前 JVM 堆内存参数配置是否合理

查看堆

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值