开发者社区> 问答> 正文

[@倚贤][¥20]如何进行JVM调优,有没有标准化的调优流程可以参考?

问题来自Java技术沙龙的陈帅
Java技术沙龙报名链接:https://yq.aliyun.com/promotion/796

展开
收起
李博 bluemind 2018-12-10 15:55:38 2301 0
2 条回答
写回答
取消 提交回答
  • 问题发生后,第一时间是快速保留问题现场供后面排查定位,然后尽快恢复服务。保留现场的具体操作:

    打印堆栈信息,命令行:jstack -l 'java进程PID'
    打印内存镜像,命令行:jmap -dump:format=b,file=hprof 'java进程PID'
    生成core文件,命令行:gcore 'java进程PID'
    保留gc日志文件
    保留业务日志文件
    查看JAVA堆内存运行分配:命令行:jstat -gcutil 'java进程PID' 1000
    完成以上操作后,尽快重启JAVA进程或回滚,恢复服务。

    当应用系统运行缓慢,页面加载时间变长,后台长时间无影响时,都可以参考以下归类的解决方法。绝大部分的JAVA程序运行时异常都是Full GC、OOM(java.lang.OutOfMemoryError)、线程过多。主要分这么几大类:

    持续发生Full GC,但是系统不抛出OOM错误

    堆内存溢出:java.lang.OutOfMemoryError:Java heap space

    线程过多:java.lang.OutOfMemoryError:unable to create new native thread

    JAVA进程退出

    CPU占用过高

    通常来说,可以用一些常用的命令行来打印堆栈、内存使用分配、打印内存镜像文件来分析,比如jstack、jstat、jmap等。但是某些时刻,还是需要引入更高阶的代码级分析工具(比如btrace)才能定位到具体原因。针对每一种问题,我会依据具体的case来详细说明解决方式。

    2019-07-17 23:19:18
    赞同 展开评论 打赏
  • 1.阿里云大学讲师,主讲《微服务Spring Cloud设计与开发实战》《MongoDB高级实战》等课程 2.MongoDB中文社区专家 3.《MongoDB实战》第2版译者 5.吉林大学计算机科学学士、上海交通大学硕士

    JVM优化有参考经验方法,因为每个公司系统不同,JVM版本不同,优化的方式也不一样。
    1、首先,在调优JVM之前分析代码。找到问题点,对症下药,解决问题
    2、其次,仔细阅读JVM文档; 理解JVM参数的意义。 例如,-server标志仅在JVM保持驻留并运行一段时间时才有用; -server“关闭”JIT / HotSpot,并且需要通过相同的路径进行多次传递才能启动。 另一方面,-server减慢了JVM的初始执行速度,因为设置时间更长。
    3、JVM优化的网站和书籍参考资料 http://www.javaperformancetuning.com/
    4、借助 VisualGC或者VisualVM,或者JMAP,JStack等工具辅助进行JVM优化。监控内存使用情况,堆栈情况,对象,是否内存泄露等,然后再采取具体措施有针对性的解决问题。

    2019-07-17 23:19:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JVM实战 立即下载
JVM的GC 立即下载
基于JVM的脚本语言开发、运用实践 立即下载