java 内存情况_Java代码中获取运行时内存情况
在此之前,还是先看下JVM内存结构和JVM参数调优,网上太多不说也罢。
另外提醒的是方法反映的都是java这个进程的内存情况,跟操作系统的内存根本没有关系。
public class Test {
public static void main(String[] args) {
System.out.println(Runtime.getRuntime().freeMemory()/1024/1024 + " M");
System.out.println(Runtime.getRuntime().totalMemory()/1024/1024 + " M");
System.out.println(Runtime.getRuntime().maxMemory()/1024/1024 + " M");
}
}
三个值的解释:
A.maxMemory()这个方法返回的是java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存,以字节为单位,如果在运行java程序的时候,没有添加-Xmx参数,那么就是64兆,也就是说maxMemory()返回的大约是64*1024*1024字节,这是java虚拟机默认情况下能从操作系统那里挖到的最大的内存。如果添加了-Xmx参数,将以这个参数后面的值为准,例如java -cp ClassPath -Xmx512m ClassName,那么最大内存就是512*1024*0124字节。
B.totalMemory()这个方法返回的是java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有内存。如果在运行java的时候没有添加-Xms参数,那么,在java程序运行的过程的,内存总是慢慢的从操作系统那里挖的,基本上是用多少挖多少,直挖到maxMemory()为止,所以totalMemory()是慢慢增大的。如果用了-Xms参数,程序在启动的时候就会无条件的从操作系统中挖-Xms后面定义的内存数,然后在这些内存用的差不多的时候,再去挖。
C.freeMemory()是什么呢,刚才讲到如果在运行java的时候没有添加-Xms参数,那么,在java程序运行的过程的,内存总是慢慢的从操作系统那里挖的,基本上是用多少挖多少,但是java虚拟机100%的情况下是会稍微多挖一点的,这些挖过来而又没有用上的内存,实际上就是freeMemory(),所以freeMemory()的值一般情况下都是很小的,但是如果你在运行java程序的时候使用了-Xms,这个时候因为程序在启动的时候就会无条件的从操作系统中挖-Xms后面定义的内存数,这个时候,挖过来的内存可能大部分没用上,所以这个时候freeMemory()可能会有些大。
java 内存情况_Java代码中获取运行时内存情况相关推荐
- 显示android 运行时异常,在android中获取运行时异常
我做了一个简单的android应用程序,从一个活动移动到另一个活动,长度为5个编辑文本输入.但我得到了例外.我附加了两个java文件(MainActicity和Another),mainfest文件和 ...
- Windows 8 中的运行时内存减少
Windows 8 的运行时内存使用是确定 Windows 8 系统要求以及将承载 Windows 8 的大量设备类型的一个重要因素.如您所知,我们要在基于 SoC 的低功耗设备上交付完整的 Wind ...
- java输出日志_java代码中如何正确使用loggger日志输出
java代码中如何正确使用loggger日志输出 发布时间:2019-06-28作者:spider阅读(2980) 当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统, ...
- asm 5 java,java – 使用ASM(5.x)在字节代码中检测运行时的递归方法调用:howto?
问题如下; Java代码中的方法是: Rule foo() { return sequence(foo(), x()); } 这将引发解析循环,当然应该避免;但是,这是合法的: Rule foo() ...
- java 读取 指纹_java代码怎么获取数字的证书那一串20位指纹?
展开全部 通过JAVA来读取数字证书的方法获取20位指纹: CARead.java文件代码32313133353236313431303231363533e4b893e5b19e31333339663 ...
- Java页码超出_java - 表中的页码 - 堆栈内存溢出
为此,创建一个文本运行,并在这些文本运行中插入字段"PAGE \\\\* MERGEFORMAT"和/或"NUMPAGES \\\\* MERGEFORMAT" ...
- java result元素_Java JDBC 中获取 ResultSet 的大小
当我们执行完一条Sql语句,获取到一个 ResultSet 对象后,有时我们需要立即知道到底返回了多少个元素,但是 ResultSet 并没有提供一个 size() 方法 or length 的属性, ...
- python 内存分析工具_[转] python运行时内存分析工具meliae
meliae是一个python进程内存占用监控.分析工具,它的安装需要依赖pyrex包. 一.安装: 安装python内存分析工具 sudo pip install cython sudo pip i ...
- 深入理解java虚拟机一 JAVA运行时内存区域与class文件
一 JAVA运行时内存区域 JVM在加载class文件时,会将class文件定义的数据结构转为运行时内存中的数据,那么jvm是如何安排运行时的内存区域呢? jvm将运行时内存划分为以下几个部分: 堆: ...
最新文章
- 科技公司合作伙伴清单
- javascript 回调函数
- 问题: springboot返回登录失败
- 3分钟看完Build2016 Day 1 Keynote
- 怎么在mysql中打开表存信息,我应该如何存储用户的“收藏夹”在mySQL表?
- 超链接标签/<a>标签
- python getopterror_python3 getopt用法
- 优先级调度算法实现_React17新特性:启发式更新算法
- OpenShift 4.3 - 基于虚拟机的BareMetal离线安装(Shell说明)
- python tree 库_Python——tree
- NYOJ-769乘数密码,逆元解法;
- nanohttpd:实现跨域(CORS)请求
- 带阵列卡的服务器如何装系统,带阵列卡的服务器能不能做ghost
- 新生儿的一类(免费)疫苗(截止2019年)
- HALCON_XLD轮廓算子_二
- angular : 自定义组件双向绑定 [(ngModel)]
- Pythone(学习笔记) Request 豆瓣网页排行榜
- 统计项目代码行数 intelliJ idea statistic 插件
- 卡那霉素(Kanamycin偶联卵清白蛋白 (KAN-OVA)
- 鸿蒙操作系统细节曝光,华为鸿蒙系统细节曝光 UI 重绘动画多 / 系统简介更流畅...