JVM调优实战

这篇具有很好参考价值的文章主要介绍了JVM调优实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、当项目运行一段时间以后,产生了OOM的问题,我们该如何排查问题呢?

用top命令,看看是哪个进程CPU占用率高,获取它的进程ID,再根据具体的进程id,执行 top -HP 进程id号  命令,看看哪个线程的CPU占用率高,如果是业务线程出现问题,则根据线程ID去检查业务代码;如果是GC线程占用率高,去看看日志再确定具体问题(有可能发生内存泄漏)。

1、执行jps,

列出系统中所有在运行的java进程,由此可以获取指定进程的进程id号

2、执行jinfo 进程id号 ,

可以获取进程的详细信息,可以看到堆内存设置的大小等

JVM调优实战

 3、 jstat -gc 进程id号,

可以看到内存中各个区域的内存使用情况

JVM调优实战

 4、top

可以查看所有的进程,可以看到各个进程占用cpu的情况,并动态进行刷新;可以根据CPU占用率找出发生问题的进程。

JVM调优实战

 5、知道哪个进程有问题,则执行 top -HP 进程id号  命令

,可以看到指定进程内,线程占用CPU的情况,以及线程的名称和线程的种类(业务线程和系统线程)

或者是使用命令:jstack  进程ID | more

可以看到进程中各线程的详细信息,如线程状态,线程调用了哪些方法;

 

JVM调优实战

 可以用这个命令来判断线程是否陷入死锁,如果多个线程都在等待同一个对象,那么可能陷入死锁。

JVM调优实战

 线程名称如下,符合开发规范需要给每个线程赋予名字,以方便知道是哪一个线程出现问题JVM调优实战

6、执行jmap  -histo 进程id,

可以查看Java堆转储快照的信息,可以知道有哪些类,这些类产生多少对象,占用了多少内存。

JVM调优实战

 可以将整个堆存储以文件的形式导出:

JVM调优实战

 7 可以使用jvisualVM工具,

将堆生成的文件进行分析 

为什么在实际项目中,最大堆和最小堆的数值大多设置成一样?

如果大小设置成不一样,那么堆内存大小会根据实际需要进行动态的扩张或者是缩小,而这一个过程是耗费一定资源的,影响了程序的执行效率。如果说一台机子就一个程序在跑,那就没必要将最大堆和最小堆大小设置成不一样的。文章来源地址https://www.toymoban.com/news/detail-466088.html

到了这里,关于JVM调优实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 13-JVM调优实战-3

    上一篇:12-JVM调优实战-2 今天来介绍一款阿里巴巴的调优工具。 Arthas详解 Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,可以方便的定位和诊断线上程序运行问题。Arthas 官方文档十分详细,详见:https://arthas.aliyun.com/ 得益于 Arthas 强大且

    2024年02月09日
    浏览(35)
  • JVM实战篇:GC调优

    目录 一.GC调优的核心指标 1.1吞吐量(Throughput) 1.2延迟(Latency) 1.3内存使用量 二.GC调优的方法 2.1监控工具 Jstat工具 VisualVm插件 Prometheus + Grafana 2.2诊断原因 GC日志 GC Viewer GCeasy 2.3常见的GC模式 正常情况 缓存对象过多 内存泄漏 持续的FULL GC 元空间不足导致的FULL GC 三.修复G

    2024年01月23日
    浏览(38)
  • MuMu模拟器运行一段时间后Device.Present耗时突然上升

    1)MuMu模拟器运行一段时间后Device.Present耗时突然上升 2)​如何在运行过程中获得温度信息 3)Input System鼠标更换主按键的Bug 4)如何禁止Unity向https://config.uca.cloud.unity3d.com发送设备信息 这是第347篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等

    2024年02月13日
    浏览(39)
  • JVM实战(15)——Full GC调优

    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖,挖的越深,基础越扎实! 阶段1、深入多线程 阶段2、深入多线程设计模式 阶段3、深入juc源码解析

    2024年01月17日
    浏览(34)
  • JVM实战(14)——Young GC调优

    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖,挖的越深,基础越扎实! 阶段1、深入多线程 阶段2、深入多线程设计模式 阶段3、深入juc源码解析

    2024年01月16日
    浏览(35)
  • 【Java虚拟机】JVM调优和分析案例综合实战

    1.什么是JVM性能优化 jvm性能优化涉及到两个很重要的概念:吞吐量和响应时间。jvm调优主要是针对他们进行调整优化,达到一个理想的目标,根据业务确定目标是吞吐量优先还是响应时间优先。 吞吐量:用户代码执行时间/(用户代码执行时间+GC执行时间)。 响应时间:整个接

    2024年02月03日
    浏览(39)
  • 深度剖析JVM调优法则,神器Arthas从CPU/内存出发轻松掌握调优实战技巧

    场景一、CPU过高 CPU占用过高排查思路: step1:进行arthas step2:输入deashboard 如何不记得命令可以在控制台输入help step3:查看线程栈信息 从线程栈信息中定位到具体的java代码。 场景二、内存占用过高 内存占用过高排查思路: step1:进行arthas step2:输入deashboard 在dashboard页面中

    2024年02月06日
    浏览(44)
  • 分析Flink,源和算子并行度不一致时,运行一段时间后,看似不再继续消费的问题,提供解决思路。

    之前有分析过一次类似问题,最终结论是在keyby之后,其中有一个key数量特别庞大,导致对应的subtask压力过大,进而使得整个job不再继续运作。在这个问题解决之后,后续又再次出现了积压的情况,针对这个问题进行排查分析。 通过以下这张图,可以看到当前它是没有数据积

    2024年02月12日
    浏览(42)
  • JVM监控和调优常用命令jps|jstat|jinfo|jmap|jhat|jstack实战

    性能优化 :通过JVM调优,可以提高Java应用程序的性能,减少响应时间,提高吞吐量,以更好地满足用户需求。性能优化可以加快应用程序的执行速度,减少延迟,提高用户体验。 内存管理 :JVM负责管理Java应用程序的内存。正确的内存管理可以避免内存泄漏和内存溢出等问

    2024年02月09日
    浏览(39)
  • JVM工作原理与实战(十六):运行时数据区-Java虚拟机栈

    JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、运行时数据区 二、Java虚拟机栈 1.栈帧的组成 2.局部变量表 3.操作数栈 4.帧数据 总结 JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具

    2024年01月20日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包