java 内存 监控_监控JVM内存使用情况
1.使用jstat命令查看堆内存的使用情况
jstat 命令选项 vmid 间隔时间 查询次数
1.查看当前进程Class类加载的统计
jstat -class *****
2.查看编译统计
jstat -compiler *****
3.查看垃圾回收统计
jstat -gc *****
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
13312.0 13312.0 0.0 0.0 81920.0 7537.3 217088.0 4546.5 18944.0 18467.5 2304.0 2182.4 7 0.055 6 0.151 0.206
s0c: 第一个Survivor区域大小
S1C:第二个Survivor区域的大小
S0U:第一个Survivor区域使用的大小
S1U:第二个Survivor区域使用的大小
EC:Eden区域的大小
EU:Eden区域的使用大小
OC:Old区的大小
OU:Old区使用的大小
MC:方法区大小
YGC:年轻代垃圾回收次数,YGCT: 使用时间
FGC:年老代垃圾回收次数,FGCT: 使用时间
可追加间隔时间和打印次数
jstat -gc ***** 1000 5 代表间隔一秒打印五次
2.通过jmap监控内存使用情况
2.1 监控堆内存:jmap -heap *****
2.2 监控内存中对象的数量及其大小:
查看所有对象的数量以及大小包括类型:jmap -histo ***** | more (| more代表分页)
查看活跃对象的数量以及大小包括类型:jmap -histo:live ***** | more
2.3 通过jmap导出堆内存使用情况的文件,方便查看
jmap -dump:format=b,file=E:\Y2学习\JVM\导出\dump.dat 30052
2.4 通过jhat查看dump文件并且进行分析,启动一个HTTP端口进行访问,通过该端口可以查看到整个应用程序所使用的的所有对象的情况,提供OQL进行检索
jhat -port 8081 E:\Y2学习\JVM\导出\dump.dat
底部有查询工具
3.MAT分析工具,在工具中可以查看到对象数量以及内存使用的情况,当然可以分析出可能出现问题
如果问题是正常情况,可以加大内存,如果是非正常情况,手动解决代码问题
选择要分析的文件
查看数量及占用大小等
首行空出是搜索功能,根据正则搜索,例输入 java 回车搜索
4.模拟内存溢出:
public static voidmain(String[] args) {
List objList=new ArrayList<>();for (int i=0;i<10000000;i++){
String str="";for(int j=0;j<1000;j++){
str+=UUID.randomUUID().toString();
}
objList.add(str);
}
System.out.println("添加数据成功~");
}
参数设置:-Xms8m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError,初识空间和最大空间都给成8m,如果报错就生成报错文件
这样启动运行必然会内存溢出
找到项目的目录,找到报错文件
再用mat分析这个文件
java 内存 监控_监控JVM内存使用情况相关推荐
- jvm内存结构_聊聊JVM内存结构
起因 我们经常会在面试的时候被问到JVM的内存结构,很多人会觉得这东西真的有用吗?也就是面试造火箭,入职拧螺丝.问这个就是纯粹来刁难人的吧. 但实际上,我们细想一下. •假设你不知道局部变量实际上属于 ...
- java 查看内存占用_查看JVM内存使用状况
1.jps:查看本地正在运行的java进程和进程ID(pid) 2.jinfo pid,查看指定pid的所有JVM信息 1)jinfo -flags pid 查询虚拟机运行参数信息. 2)jinfo ...
- java 内存溢出的分类_【深入理解Java虚拟机】读后感:JVM内存划分与内存溢出小结...
扫码关注公众号:Java 技术驿站 发送:vip 将链接复制到本浏览器,永久解锁本站全部文章 [公众号:Java 技术驿站] [加作者微信交流技术,拉技术群] # JVM内存划分与内存溢出小结 # 1 ...
- java内存 海子_[转]JVM的内存区域划分
学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆.栈以及静态数据区.那么在Java语言当中,内存又是如何划分的呢? 由于Java程序是交由JVM执行 ...
- 线程基础知识_线程生命周期_从JVM内存结构看多线程下的共享资源
线程生命周期 线程状态 New: 线程创建(new Thread()) Runnable: 线程可运行(thread.start()), 注: 调用start并不一定是运行状态, 可能在等待CPU调度 ...
- [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义...
前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine ,既然是虚拟机, ...
- java堆栈句柄,深入了解JVM—内存区域
1.Java虚拟机运行时数据区 在前面的几篇博文中,我们只是简单的把内存区域分为了堆和栈,但其实,这种分法是十分粗糙的,jvm在实际运行的时候,内存区域的划分绝对不是那么简简单单的就两块,我们一起看下 ...
- java内存图怎么画,jvm内存模型怎么画?简单美观的模型图制作软件
jvm内存模型是什么呢?jvm内存模型是一类用于描述由java栈.java堆.方法区.本地方法栈和程序计数器各部件构成的Java程序.在执行过程中,由jvm管理的不同数据区域的一类图表.jvm内存模型 ...
- linux tomcat java heap space_Linux下tomcat JVM内存设置
常见的内存溢出有以下两种: java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: Java heap space ...
- java内存分配空间大小,JVM内存模型及内存分配过程
一.JVM内存模型 JVM主要管理两种类型内存:堆(Heap)和非堆(Permanent区域). 1.Heap是运行时数据区域,所有类实例和数组的内存均从此处分配.Heap区分两大块,一块是 Youn ...
最新文章
- Javascript函数之深入浅出递归思想,附案例与代码!
- 一个C#和C++执行效率对比的简单实例
- Intent 匹配规则
- spring 配置文件无法加载,junit找不到xml配置文件java.lang.IllegalStateException: Failed to load ApplicationContext...
- flask python web开发 可视化开发_Python + Flask 项目开发实践系列六
- WeScale 技术篇 —— mpvue 与微信小程序的火花
- 【Apache】Apache ab压力测试工具Window下载和用法详解
- LeetCode 230. 二叉搜索树中第K小的元素(递归)
- Python代码测试 - unitest\doctest\nose\pytest
- 笔试c语言实现栈,栈的实现与操作(C语言实现)
- jdk1.8 64位与32位免费下载
- 3559A对接IMX577 4lane 12M
- 帝国cms 自动生成html,帝国CMS静态生成为一行代码教程
- 大童保险确认获得投资:德弘资本等出资15亿元,获得约33%股权
- 报警器——基于arduino
- 6410同时支持colorkey和aphablend
- vue项目答辩题目【第一弹】
- 推荐40个互联网知名博客
- 【干货】抗干扰利器之光耦使用
- Kubernetes主要特性回顾