java内存问题怎么排查,java占内存高排查 java应用占用内存过高排查的解决方案...
想了解java应用占用内存过高排查的解决方案的相关内容吗,zhaixing_0307在本文为您仔细讲解java占内存高排查的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:java,占内存过高,排查,下面大家一起来学习吧。
故障:收到服务器报警,内存使用率超过80%
1.查看
使用dstat和top查看内存使用最高的应用
使用dstat
查到内存占用最高的是java应用,使用2253M内存,但是这台服务器跑了好几个java,具体哪个进程使用top看下资源情况
使用top
可以看到java应用整体内存使用率超过了70%,其中pid为16494的进程 一个应用占了28.7的内存
2.定位线程问题
使用ps查看16494的线程情况
命令:ps p 16494 -L -o pcpu,pmem,pid,tid,time,tname,cmd
看到16494这个pid的应用产生了很多线程。
3.查看内存使用的堆栈
使用jstack查看
我们挑选了TID=17417的线程进行分析
在分析前需要将17417这个id转换为16进制,方便查找信息
[root@localhost ~]# printf "%x\n" 17417
4409
16进制为4409
将pid为16494的应用打印到日志中
[root@localhost ~]# jstack -l 16494 > jstack.log
4.查看内存堆栈信息
[root@localhost ~]# vim jstack.log
在日志信息中查找刚刚转换的4409
可以看到这个线程状态为WAITING
通过查看日志发现有大量的 waiting on condition
parking to wait for <0x0000000085dce510>
存在大量线程等待被唤醒,占用大量内存
5.代码优化
将相应日志发送给相应开发,优化线程
补充:分析java线程占用cpu或者内存高的代码
1、通过top查看占用cpu或者内存高的进程截图如下【备注输入大写P以cpu从大到小排序,大写M以内存大小排序】
2、通过对应的cpu找到PID也就是进程对应的pid,然后找到java进程106854这个进程id
3、通过命令top -Hp PID 例如top -Hp 106854
就可以列出该进程下的所有线程id
4、通过输出大写的P查看线程占用cpu最高的或者通过大写M查看内存占用最高的
然后找到109391这个线程id
5、使用命令printf “%x\n” 109391 输出对应的十六进制码,1ab4f这个码是为了过滤线程id查到对应的代码
6、使用命令jstack PID|grep 1ab4f 【备注PID是进程的id,1ab4f是这个进程下的一个线程占用最高的cpu十六进制码】
7、通过上面的输出发现kafka,所以会联想到,kafka一直监听消息,所以消耗cpu,正常现象
8、如果出现自己写的类,说明需要修改代码逻辑了
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
相关文章
java内存问题怎么排查,java占内存高排查 java应用占用内存过高排查的解决方案...相关推荐
- 手机拍的照片计算机内存不足怎么办,手机内存不够用,照片应该怎么处理才能够少占用内存?...
手机内存不够用,照片应该怎么处理才能够少占用内存? 随着手机功能越来越强大,我们的手机内存也越来越少被使用.除了APP占据了我们手机内存的很大一部分,另一个最大的存在就是我们的手机图片.手机图片实际上 ...
- zabbix监控mysql内存_zabbix通过自定义脚本监控nginx,php-fpm和mysql占用内存数和进程的个数...
zabbix通过自定义脚本监控nginx,php-fpm和mysql占用内存数和进程的个数 首先,在zabbix脚本目录下添加一个脚本,写入如下代码 #!/bin/bash #license:GPL ...
- 对《java程序员上班那点事》笔者对数组占用内存质疑
1.<java程序员上班那点事>笔者对数组占用内存的描述 2.实际测试情况: /*** 测试一维数组占用内存*/public static void testOneArray() {Sys ...
- java弱引用(WeakReference)和SoftReference的区别以及在android内存处理的作用
http://mingnjintian-163-com.iteye.com/blog/1120472 weakReference一般用来防止内存泄漏,要保证内存被VM回收 softReference的 ...
- oracle软件占多少内存,oracle 占用内存
1.在使用database configuration assistant 配置之时,注意设置SGA大小,一般会默认占用内存的40%,这样就特别慢了. 2.不使用oracle的时候把服务停掉. 3.使 ...
- unity占内存大小_unity texture 占用内存大小对比
打包多种类型的项目,空项目和10张放在Resources文件夹中的图为比较案例.以下是比较数据. IPHONE: 1.空项目----空间占用量42.3MB----IPA大小10MB 2.10张1200 ...
- win10 注册服务器占内存,windows10占用内存大怎么办_win10内存占用高解决方法
大部分用户都已经升到win10系统,当使用win10系统可能会遇到内存占用率高的情况.占用内存高的话电脑运行就会卡住,可能导致电脑死机.那么要如何解决windows10占用内存大呢?遇到这种情况可以试 ...
- w3wp.exe占用内存过高的问题
今天下午服务器突然不能访问,通知机房重启后恢复.怀疑是网站asp程序的问题.上网查了查: **** **** 在IIS6下,经常出现w3wp的内存占用不能及时释 ...
- svhost占用内存过高
Win7系统开机后,系统响应缓慢,检查任务管理器发现某个 svchost.exe 进程占用内存和CPU过高,严重的还会经常导致打开的某些程序失去响应. svchost.exe 是用来启动系统服务的,所 ...
- 128G手机为何实际只有112G?预装App占用内存不合理
北京青年报 作者:温婧 128G手机为何实际内存只有112G? 专家:应给硬件减负把主动权交给用户 日前,相声演员岳云鹏在网络上表示,自己新买的128G的手机实际内存只有112G,认为手机厂商应当在宣 ...
最新文章
- 【前端】纯前端的一个‘喜欢我吗?’
- 原来matplotlib 散点图可以这样
- 1、代理服务器及haproxy基础
- linux操作系统cp命令
- centos 搭建web平台
- Maven中的自定义settings.xml文件
- Altium Designer 15 PCB图层详解
- 如何在 Mac 上映射网络驱动器
- 关于在手机上注册Google账号
- Spark Streaming系列-1、什么是Spark Streaming?
- 【接口篇 / Lan】(5.4) ❀ 02. 与交换机连接 (回程路由) ❀ FortiGate 防火墙
- 计算机毕设(附源码)JAVA-SSM基于Web美食网站设计
- 基于原子势函数及人工蜂群算法进行形状匹配优化(Matlab代码实现)
- 搜索算法工程师、专家、leader
- 飞檐走壁已经不是成龙甄子丹们的特技了,TA也可以做到!
- 百度热搜榜标题与热搜指数爬虫(python)
- [译]自上而下认识Elasticsearch
- 一款纯前端类似excel的在线表格
- 基于Opencv的车牌识别系统想必大家都会了,那么识别后计费系统会了吗?
- 【Excel VBA】设置宏语句的快速访问按钮即如何设置快速访问工具栏
热门文章
- IDEA使用自带数据库连接工具连接Mysql,及报错解决
- ajax跨域请求.json文件,使用JSONP对JSON文件进行跨域Ajax请求
- Centos7.5源码编译安装nodejs
- Qt 实现钢笔画线效果详细原理
- 【Java多线程编程】典型的多线程同步例程
- 详解图的各种令人心慌的概念和四种图的存储结构(整理到吐)
- 用栈实现括号匹配的检验
- 以下python语言关键字在异常处理_【单选题】以下 Python 语言关键字在异常处理结构中用来捕获特定类型异常的选项是: ( )...
- Excel是计算机应用软件,计算机应用软件Excel 2003教学计划
- python虚拟环境搭建mac_mac搭建python virtualenv虚拟环境并使用 - 李金龙