当前位置:首页 > 每日看点

jvm调优有什么技巧?

卡卷网1年前 (2025-01-10)每日看点262

场景一、CPU过高

CPU占用过高排查思路:(查进程->查线程列表->查线程堆栈)

<>step1:通过top命令查询占用CPU情况

top

p.s.shift+p(大写的P-cpu排序)shift+m(大写的M-内存排序)

<>step2:通过进程pid,查询对应的线程列表

top-Hppid

    -H:显示线程信息-ppid1,pid2,...:只显示指定进程的信息

<>step3:线程id转为十六进制

从step2中可以看到占用cpu较高的线程id,打印出十六进制

printf'%x\n'id

<>step4:通过jstack查出线程栈信息

cpu过高主要是线程方面的问题,我们知道jvm中每个线程都分配了单的栈,我们可以通过jstack查看线程栈情况。

jstackpid

p.s.这里的pid为进程id,也就是第一步top中的pid

对照着step3中占用cpu最高的线程十六进制值可以定位到线程的栈信息。

上图可以看到具体定位到了ja的代码,就可以具体分析一下这个ja代码为什么会创建大量的线程占用大量的cpu。

除了ja程序线程问题,cpu过高也可能是线程死锁造成的,我们通过jstack也可以查看线程死锁的情况。

<>step5:通过jstack查看情况死锁情况

jstack-lpid

-l:除了线程列表外,还显示关于锁的附加信息

通过栈中的信息可以定位到代码中死锁的代码。

<>step6:通过jstat查看gc情况

除了以上的各种情况,还有一种就是ja频繁的gc也会造成cpu占用过高

jstat-gcutilpid1000

1000ms为刷新数据的间隔时间

如果有频繁的gc就可以分析堆数据中哪些对象创建的较多,就可以具体分析了。

场景二、内存占用过高

排查思路:(查进程->jvm内存占用)

<>step1:通过top命令查询占用CPU情况

top

p.s.shift+p(大写的P-cpu排序)shift+m(大写的M-内存排序)

<>step2:通过进程pid查看gc情况

jstat-gcutilpid1000

以下是该命令的输出结果说明:

以上各个区域的使用情况都会以百分的形式进行显示,即0.0%~100.0%之间。

例如,如果输出结果为“40.0020.0060.0070.00100.00”,则表示:

<>step3:通过jmap查看堆情况

通过step2已经发现jvm中的数据过多,频繁的ygc并且大量的数据都在老年代没有回收,这样就会表现出内存占用过高。下一步就是分析那些对象占用了内存。

jmap-histopid

jmap-histo命令可以用于输出Ja堆内存中各个对象类型及其数量的计信息。具体说明如下:

可以看到org.example.User创建的较多。这相就可以具体分析一下代码中哪些地方创建了User为什么没被回收。

与jmap-histo类似的命令:

#jmap-dump jmap-dump:format=,file=heapdump.hprofpid

jmap-dump命令可以用于生成Ja进程的内存快照文件(.hprof格式),以便进行后续的分析和调试。具体说明如下:

导出的快照文件可以通过jvisualvm或mat来查看:

mat还较智能,直接把存在问题的给你列出来

<>step4:jmap-heapjvm内存实际占用情况

除了以上内存占用情况,在ja项目中还存在一种情况。如我ja项目没有配置jvm参数都使用默认的配置,我64G内存。会发现用一段时间后ja进程占用了8G内存。这时你可以使用命令看看ja实际使用的内存情况,然后再调整jvm参数。

jmap-heap是一个用于获取Ja堆内存信息的命令行工具,它可以输出Ja虚拟机中堆内存的使用情况和配置信息。

玄明Hanko:深度剖析JVM调优法则:从两大特性CPU、内存出发轻松掌握调优实战技巧玄明Hanko:JVM调优神器,运用Arthas释放Ja应用性能的全部潜力

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/8468.html

分享给朋友:

相关文章

388万个网站,大家都不做网站了?

388万个网站,大家都不做网站了?

根据这些数据,守护袁昆发现手机网民基本和网民数持平(占比99%),手机上网成为第一选择。视频用户数和即时通信用户都超过10亿,占网民整体97%以上。网络支付用户、网络购物用户过9亿,估计电商用户增长基本变缓。大家不看好的搜索引擎用户数8.2…

每天5点就下班了,闲着也是闲着,有哪些副业可以推荐?

每天5点就下班了,闲着也是闲着,有哪些副业可以推荐?

今天整理了36个搞钱APP 可以先接触学习看看,然后选定一个感兴趣的方向去精进 要知道机会不是一下子来临的, 而一定是你前期做了很多准备 每天进步一点点,就像滚雪球一样 希望所以女生,能够在2024年提升自己, 立下一个新的搞钱Flag吧…

在 Istio、Linkerd 和 Cilium 之间,哪种服务网格在性能上表现最佳?

在 Istio、Linkerd 和 Cilium 之间,哪种服务网格在性能上表现最佳?

在讨论服务网格之前,先理解一下为什么我们需要它。现代微服务架构意味着将应用拆分为多个小型、独立的服务,这些服务可以独立开发、部署和扩展。然而,服务之间的通信和管理成了巨大的挑战,例如如何保证安全的通信、负载均衡、监控与可观测性等。服务网格…

天涯神帖,第一神帖是什么?

天涯神帖,第一神帖是什么?

一些个人觉得比较经典的天涯神贴(更新进去了): 话说1999年那会儿,中国的互联网还是个小婴儿,BAT三巨头都还在穿开裆裤呢,天涯社区就已经悄然诞生了。 时光飞逝,到了2007年,这小小社区竟然已经吸引了超过20…

自己拥有一台服务器可以做哪些很酷的事情?

自己拥有一台服务器可以做哪些很酷的事情?

我就有一台,跑了两年了,ipv6 ddns 网络,加虚拟化平台.跑了个 winserver 和 ubuntu 服务器。 稳的雅皮! 拆掉后盖,散热更好。烟盒固定硬盘。键盘防止灰尘掉落。电池拆掉,屏幕拆掉,也是散热考虑。 屏幕拿去做便携副屏了…

华为纯血鸿蒙,从此天下三分了吗?

华为纯血鸿蒙,从此天下三分了吗?

万众期待的纯血版 HarmonyOS NEXT 终于是端上来了,主打一个自研,从里到外,从内核到架构,都是自研。 用户的激情已经被点燃,可见大家对于纯血鸿蒙的期待,但是鸿蒙系统能不能真正与安卓、iOS三分天下呢?目前来说,还为时过早。…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。