java排查进程占用系统内存高方法

 更新时间:2023年06月25日 17:37:27   作者:运气爆棚1368  
这篇文章主要为大家介绍了java进程占用系统内存高排查方法,

1、top 查看进程内存

top 查看具体是哪个进程吃内存较多,接下来我们以排查第一个为例

话外音

根据pid 查找 pid所属的 docker D
docker inspect -f "{{.Id}} {{.State.Pid}} {{.Config.Hostname}}" 
$(docker ps -q) |grep <PID>

2、定位线程问题

(通过命令查看9534进程的线程情况)

命令:ps p 7051 -L -o pcpu,pmem,pid,tid,time,tname,cmd

由此可以看到这PID:7051 的进程产生了很多线程。接下来就可以通过jstack查看内存使用的堆栈。

具体可以执行 ps p 7051 -L -o pcpu,pmem,pid,tid,time,tname,cmd |wc -l 来查具体有多少线程

3、查看内存使用的堆栈

在这里我们挑选了TID=7053的线程进行分析,首先需要将7053这个id转换为16进制。需输入如下命令

执行命令 printf "%x\n" 7053

4、将PID为7051的堆栈信息打印到jstack.log中

命令:jstack -l 7051> /usr/local/temp/jstack.log

5、查看日志

好多waiting的,具体需要开发查看代码,为何这么多线程等待

可以看到这个线程状态为:RUNNABLE。是正在运行状态的

另外其它的大部分线程状态为:WAITING。通过查看文件分析 看到大量 Java Thread State。

说明它在等待另一个条件的发生,来把自己唤醒,或者干脆它是调用了 sleep(N)。

此时线程状态大致为以下几种:

java.lang.Thread.State: WAITING (parking):一直等那个条件发生;

java.lang.Thread.State: TIMED_WAITING (parking或sleeping):定时的,那个条件不到来,也将定时唤醒自己。

以上就是java排查进程占用系统内存高方法的详细内容,更多关于java进程占用排查的资料请关注脚本之家其它相关文章!

相关文章

  • Java中的Phaser并发阶段器详解

    Java中的Phaser并发阶段器详解

    这篇文章主要介绍了Java中的Phaser并发阶段器详解,Phaser由JDK1.7提出,是一个复杂强大的同步辅助类,是对同步工具类CountDownLatch和CyclicBarrier的综合升级,能够支持分阶段实现等待的业务场景,需要的朋友可以参考下
    2023-12-12
  • Spring根据URL参数进行路由的方法详解

    Spring根据URL参数进行路由的方法详解

    这篇文章主要给大家介绍了关于Spring根据URL参数进行路由的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起来看看吧。
    2017-12-12
  • 浅谈java 中equals和==的区别

    浅谈java 中equals和==的区别

    这篇文章主要介绍了java 中equals和==的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Java是自学好还是参加培训班好?

    Java是自学好还是参加培训班好?

    这篇文章主要介绍了Java是自学好还是参加培训班好这一问题,给大家介绍了哪些人适合自学java,哪些人适合java培训班学习,大家可以看看内容详情
    2018-04-04
  • Flink自定义Sink端实现过程讲解

    Flink自定义Sink端实现过程讲解

    这篇文章主要介绍了Flink自定义Sink端实现过程,在Fink官网中sink端只是给出了常规的write api.在我们实际开发场景中需要将flink处理的数据写入kafka,hbase kudu等外部系统
    2023-01-01
  • Java集合框架之LinkedHashSet类解读

    Java集合框架之LinkedHashSet类解读

    这篇文章主要介绍了Java集合框架之LinkedHashSet类解读,LinkedHashSet是HashSet的有序版本,它跨所有元素维护一个双向链接的List,当需要维护迭代顺序时,就使用这个类,当遍历HashSet时,顺序是不可预测的,需要的朋友可以参考下
    2023-09-09
  • 教你如何测试Spring Data JPA的Repository

    教你如何测试Spring Data JPA的Repository

    Spring Data JPA 提供了一些便捷的方式来测试这种持久层的代码,常见的两种测试类型是集成测试和单元测试,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • Java程序执行时间的2种简单方法

    Java程序执行时间的2种简单方法

    这篇文章介绍了Java程序执行时间的2种简单方法,有需要的朋友可以参考一下
    2013-09-09
  • JavaWeb实现文件上传功能详解

    JavaWeb实现文件上传功能详解

    这篇文章主要介绍了JavaWeb实现文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • SpringBoot中MybatisX插件的简单使用教程(图文)

    SpringBoot中MybatisX插件的简单使用教程(图文)

    MybatisX 是一款基于 IDEA 的快速开发插件,方便在使用mybatis以及mybatis-plus开始时简化繁琐的重复操作,本文主要介绍了SpringBoot中MybatisX插件的简单使用教程,感兴趣的可以了解一下
    2023-06-06

最新评论