java cpu 内存使用情况_java高cpu占用和高内存占用问题排查 (转)
高cpu占用
1、top命令:Linux命令。可以查看实时的CPU使用情况。也可以查看最近一段时间的CPU使用情况。
2、PS命令:Linux命令。强大的进程状态监控命令。可以查看进程以及进程中线程的当前CPU使用情况。属于当前状态的采样数据。
ps -mp pid -o THREAD,tid,time
printf "%x\n" tid
3、jstack:Java提供的命令。可以查看某个进程的当前线程栈运行情况。根据这个命令的输出可以定位某个进程的所有线程的当前运行状态、运行代码,以及是否死锁等等。
jstack pid |grep tid -A 30
1,使用jps查找出java进程的pid,如3707
2,使用top -p 14292 -H观察该进程中所有线程的CPU占用。
3,找出CPU消耗较多的线程id,如15844,将15844转换为16进制0x3de4,注意是小写哦
4,使用jstack 14292|grep -A 10 0x3de4来查询出具体的线程状态。
高内存占用
搞Java开发的,经常会碰到下面两种异常:
1、java.lang.OutOfMemoryError: PermGen space
2、java.lang.OutOfMemoryError: Java heap space
Java内存模型是描述Java程序中各变量(实例域、静态域和数组元素)之间的关系,以及在实际计算机系统中将变量存储到内存和从内存取出变量这样的低层细节。
在Java虚拟机中,内存分为三个代:新生代(New)、老生代(Old)、永久代(Perm)。
(1)新生代New:新建的对象都存放这里
(2)老生代Old:存放从新生代New中迁移过来的生命周期较久的对象。新生代New和老生代Old共同组成了堆内存。
(3)永久代Perm:是非堆内存的组成部分。主要存放加载的Class类级对象如class本身,method,field等等。
如果出现java.lang.OutOfMemoryError: Java heap space异常,说明Java虚拟机的堆内存不够。原因有二:
(1)Java虚拟机的堆内存设置不够,可以通过参数-Xms、-Xmx来调整。
(2)代码中创建了大量大对象,并且长时间不能被垃圾收集器收集(存在被引用)。
如果出现java.lang.OutOfMemoryError: PermGen space,说明是Java虚拟机对永久代Perm内存设置不够。
一般出现这种情况,都是程序启动需要加载大量的第三方jar包。例如:在一个Tomcat下部署了太多的应用。
ps -mp 9004 -o THREAD,tid,time,rss,size,%mem
遗憾的是,发现PS命令可以查到具体进程的CPU占用情况,但是不能查到一个进程下具体线程的内存占用情况。
只好寻求其他方法了,幸好Java提供了一个很好的内存监控工具:jmap命令
jmap命令有下面几种常用的用法:
•jmap [pid]
•jmap -histo:live [pid] >a.log
•jmap -dump:live,format=b,file=xxx.xxx [pid]
用得最多是后面两个。其中,jmap -histo:live [pid] 可以查看当前Java进程创建的活跃对象数目和占用内存大小。
jmap -dump:live,format=b,file=xxx.xxx [pid] 则可以将当前Java进程的内存占用情况导出来,方便用专门的内存分析工具(例如:MAT)来分析。
转自:( http://www.cnblogs.com/cool4ever/p/5759944.html )
java cpu 内存使用情况_java高cpu占用和高内存占用问题排查 (转)相关推荐
- java 获取内存使用情况_Java内存使用情况查看工具
Java通过jvm自己管理内存,同时Java提供了一些命令行工具,用于查看内存使用情况. 这里主要介绍一下jstat.jmap命令以及相关工具. 一.jstat查看 gc实时执行情况 jstat命令命 ...
- java 内存情况_Java代码中获取运行时内存情况
在此之前,还是先看下JVM内存结构和JVM参数调优,网上太多不说也罢. 另外提醒的是方法反映的都是java这个进程的内存情况,跟操作系统的内存根本没有关系. public class Test { p ...
- linux 查看内存消耗情况,Linux终端:用smem查看内存占用情况
无论是作为系统管理员,还是作为使用桌面版Linux的简单用户,你都会注意到,某个进程在耗用你系统的所有内存. 首先要明白Linux是如何管理内存的:我多次接到用户的反映,说运行了free命令,就是无法 ...
- java 堆内存使用情况_java语言:JVM堆内存使用率持续上升如何排查
最近新版本发布后,在运行一段时间后程序突然无响应了,观察监控,发现JVM堆内存占用在某个时间点突然飙升,最终导致应用无响,希望对大家学习java语言有所帮助. 重启Tomcat后,应用恢复正常,并且后 ...
- java set第n位_Java学习路线:float在内存中的存储
Java学习路线:float在内存中的存储,最近在讲Java基础,讲到数据类型的转换,提到整数类型长字节类型数据放到短字节类型数据中时,由于字节数不够,会截断数据,所以需要程序员手动强制类型转换,例如 ...
- java上传文件限速_java HttpClient 上传限速(避免宽带占用过高)
需求: 因为工作站网络上行带宽过高会影响其他服务的正常使用,所以要限速 HttpClient.java package com.wuchen.utils; import com.alibaba.fas ...
- Linux查看CPU和内存使用情况(ps、free、htop、atop、nmon、/proc/meminfo等)
文章目录 Linux查看CPU和内存使用情况 Linux查看CPU和内存命令:ps 查看系统内存命令:free free与available的区别 htop (推荐) 安装 htop 参数 常用 界面 ...
- 查看计算机CPU、内存使用情况
Shift + Ctrl + Esc,打开Windows任务管理器,点击性能,如图: 可以清楚的看到整台机子的CPU.内存使用情况,其中CPU使用记录下有8个小窗口,因为博主的CPU是8核的,讲讲CP ...
- 如何使用vmstat命令监视 CPU 的使用情况(from ibm)
原贴:http://www-01.ibm.com/support/docview.wss?uid=csc19f9b92dab5a7454748256e0400072664 如何使用vmstat命令 ...
最新文章
- PHP扩展模块Memcache Redis Mssql部署
- 2.LRU算法实现 [C++]
- TypeScript里get属性的实现
- matlab提速技巧(自matlab帮助文件)
- 少儿编程150讲轻松学Scratch(三)-关卡类游戏《鱼塘》
- WebConfig Authorization 节点
- python while循环if_python – 使用if语句时陷入while循环
- 使用PDF-XChange Editor为PDF文件添加签名(图片+签名)
- jquery 如何控制滚动条每次向下滚动300px
- telephone 为空 唯一索引_数据库基础及应用试题题库
- 可视化修改SQL服务器名字,修改sql server服务器名称
- 不会安装Lomboz?直接下载eclipse JEE吧。
- C#开发工控上位机编程 csdn_机器视觉软件开发新人入门必看 --机器视觉软件开发学习路径...
- 如何使用 JS 实现带字母的导航城市列表,以及城市搜索
- 友善串口工具接收数据随机换行_mfc串口收发数据。编辑框希望每接收一次就换行。怎么实现。我的换行结果不对...
- 下面关于在dos停止mysql_下面关于在DOS停止MySql的命令中,正确的是 (5.0分)_学小易找答案...
- BUUCTF 每日打卡 2021-4-14
- 如何解决win10不能访问局域网其他电脑的问题
- Excel中函数row和column的特殊应用
- 关于MongoDB报错:connecting to: mongodb://127.0.0.1:27017/?compressors=disabledgssapiServiceName=mongodb
热门文章
- python批量下载文件教程_Python抓包菜鸟教程:批量下载图片的方法,电脑和手机都能用...
- 苹果6怎样打开html,苹果iPhone的Safari浏览器使用技巧图解
- 语言爬虫字段为空_我为什么建议前端将Python 作为第二语言?
- Redis(一):什么是NoSQL与NoSQL分类
- 【转】超酷的 mip-infinitescroll 无限滚动(无限下拉)
- 5-Dockerfile文件
- 百练4982 踩方格
- Brave Game【博弈】
- 云主机tracert外网无返回需在安全组入方向加ICMP Time Exceeded TTLexpired in transit
- 饶军:Apache Kafka的过去,现在,和未来