java导致系统满载_排查解决java进程占用系统内存高
使用top命令查看系统资源的使用情况
top
获取java的PID
或者
jps -l
jps -v
通过命令查看进程的线程情况
**ps p pid-L -o pcpu,pmem,pid,tid,time,tname,cmd**
找到以下进程中,CPU利用率比较高的线程号TID(十进制数),此处为12394
接下来就可以通过jstack查看内存使用的堆栈。
将获取的线程号PID(十进制数)转换成十六进制
printf "%x\n" 12494
结果 30ce
查看线程占内存信息
jstack pid |grep 16进制的线程id -a10
-a10的作用额外显示上下10行
**at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"Timer-1" #27 prio=5 os_prio=0 tid=0x00007fcc502082e0 nid=0x30e3 in Object.wait() [0x00007fcc58fa7000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:552)
- locked <0x00000000f5f21658> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505) "MVStore background writer nio:/root/solo_h2/db.mv.db" #23 daemon prio=5 os_prio=0 tid=0x00007fcc7cacbb20 nid=0x30ce in Object.wait() [0x00007fcc592a8000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.h2.mvstore.MVStore$BackgroundWriterThread.run(MVStore.java:2684)
- locked <0x00000000f5ea6178> (a java.lang.Object) "Abandoned connection cleanup thread" #21 daemon prio=5 os_prio=0 tid=0x00007fcc7ca9bef0 nid=0x30cc in Object.wait() [0x00007fcc593a9000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
- locked <0x00000000f5e1c750> (a java.lang.ref.ReferenceQueue$Lock)**
可以看到这个线程状态为:WAITING。通过查看文件分析看到大量Java Thread State。
说明它在等待另一个条件的发生,来把自己唤醒,或者干脆它是调用了 sleep(N)。
此时线程状态大致为以下几种:
java.lang.Thread.State: WAITING (parking):一直等那个条件发生;
java.lang.Thread.State: TIMED_WAITING (parking或sleeping):定时的,那个条件不到来,也将定时唤醒自己。
或者输出该进程的堆栈日志文件里
**jstack -l pid> jstack.log**
sz jstack.log 发送文件到桌面
再次使用十六进度ID查询也行
相关命令
1、jps 显示指定系统内的所有JVM进程
2、jstat 收集JVM各方面的运行数据
3、jinfo 显示JVM配置信息
4、jmap 堆快照
5、jhat 分析headdump文件
6、jstack 显示JVM的线程快照
查看线程信息
ps -mp pid -o THREAD,tid,time|wc -l 查看线程数
ps -mp pid -o THREAD,tid,time | sort -rn | head -10 线程列表,并按照CPU占用高的线程排序
参考资料
java导致系统满载_排查解决java进程占用系统内存高相关推荐
- java http请求 乱码_怎么解决java中的http请求乱码
怎么解决java中的http请求乱码 发布时间:2020-06-23 20:00:11 来源:亿速云 阅读:90 作者:元一 怎么解决java中的http请求乱码?针对这个问题,今天小编总结了这篇文章 ...
- java导出excel文件名_怎么解决java导出excel时文件名乱码
怎么解决java导出excel时文件名乱码 发布时间:2020-06-19 16:59:00 来源:亿速云 阅读:137 作者:元一 java解决导出Excel时文件名乱码的方法示例:String a ...
- java字符乱码问题_怎么解决java中的字符乱码问题
怎么解决java中的字符乱码问题 发布时间:2020-06-28 14:53:09 来源:亿速云 阅读:108 作者:Leah 怎么解决java中的字符乱码问题?相信很多没有经验的人对此束手无策,为此 ...
- 如何解决java中的安全问题_如何解决java中“使用了未经检查或不安全的操作 请使用 -Xlint:unchecked 重新编译 ”的问题...
导语:叶子写了一个Gradle构建的Spring Boot的项目,在IntelliJ IDEA的Terminal中使用命令Gradle build编译时提示:"ResultUtil.java ...
- java double相减_完美解决java double数相加和相减的方案
我就废话不多说了,大家还是直接看代码吧~ /** * double的计算不精确,会有类似0.0000000000000002的误差,正确的方法是使用BigDecimal或者用整型 * 整型地方法适合于 ...
- 排查解决Java进程占用内存过高
排查解决Java进程占用内存过高 1 在项目部署运行之前 1 检查JVM参数设置 2 检查代码逻辑 3 使用内存分析工具 4 检查线程 5 调整应用程序的设计 7 调整硬件资源 2 在项目部署运行之后 ...
- linux下查找java进程占用CPU过高原因
linux下查找java进程占用CPU过高原因 1. 查找进程 top查看进程占用资源情况 明显看出java的两个进程22714,12406占用过高cpu. 2.查找线程 使用top -H -p &l ...
- linux 空闲物理内存 很少,linux系统free查看内存,发现可用物理内存很少,但是查看进程却发现没进程占用大内存...
1.现象 当我们使用free命令查看内存的时候,发现可用物理内存很少,但是通过进程查看没有进程占用大内存. [root@nexus-76150 ~]# free -h total usedfreesh ...
- iis worker process内存占用大_安卓模拟器磁盘空间占用大/内存空间不足
长期使用模拟器.模拟器多开等问题,都会占用内存空间,久而久之就会出现内存空间不足.硬盘占用大的现象,可能会导致模拟器在运行中崩溃,游戏及应用闪退,模拟器卡顿等问题.如何解决硬盘空间占用大和内存不足的问 ...
最新文章
- getBoundingClientRect计算页面元素的offsetLeft、offsetTop
- Spring5源码 - 12 Spring事件监听机制_异步事件监听应用及源码解析
- Struts2、Spring3、MyBatis3整合ExtJS,完成ColumnTree 【一】
- 云服务器开启ftp_用云服务器怎么挂机器人
- mysql慢日志管理
- html拖放数据库字段,HTML5 拖放(Drag 和 Drop)
- 对一个存储过程语法的解读
- JAVA聊天室简易版1.0(多线程)
- 100-GAMP安装调试细则
- 各大快递电子面单---Api接口(顺丰、快递鸟、菜鸟)
- nginx的使用(6)—— 配置静态代理
- win10计算机无限弹网页,Win10老弹出窗口怎么回事?Win10持续闪现神秘窗口现象的解决办法...
- Python 进行debug的错误most likely due to a circular import
- 工作笔记-thingworx连接mongdb
- table 超级详细的 商品订单列表
- GPA——平均绩点计算器(5.0分制)
- 线程切换哪家强?RxJava与Flow的操作符对比
- office出现错误无法安装的解决办法
- 超级计算机“看”新冠疫情,进一步观察缓激肽假说
- jquery获取所有子元素宽度之和