JVM中MemoryUsage中init,committed,used,max的含义
来源:互联网 发布:淘宝9块9包邮报名资格 编辑:程序博客网 时间:2024/05/23 14:23
以下摘抄自JDK1.7
* <table> * <tr> * <td valign=top> <tt>init</tt> </td> * <td valign=top> represents the initial amount of memory (in bytes) that * the Java virtual machine requests from the operating system * for memory management during startup. The Java virtual machine * may request additional memory from the operating system and * may also release memory to the system over time. * The value of <tt>init</tt> may be undefined. * </td> * </tr> * <tr> * <td valign=top> <tt>used</tt> </td> * <td valign=top> represents the amount of memory currently used (in bytes). * </td> * </tr> * <tr> * <td valign=top> <tt>committed</tt> </td> * <td valign=top> represents the amount of memory (in bytes) that is * guaranteed to be available for use by the Java virtual machine. * The amount of committed memory may change over time (increase * or decrease). The Java virtual machine may release memory to * the system and <tt>committed</tt> could be less than <tt>init</tt>. * <tt>committed</tt> will always be greater than * or equal to <tt>used</tt>. * </td> * </tr> * <tr> * <td valign=top> <tt>max</tt> </td> * <td valign=top> represents the maximum amount of memory (in bytes) * that can be used for memory management. Its value may be undefined. * The maximum amount of memory may change over time if defined. * The amount of used and committed memory will always be less than * or equal to <tt>max</tt> if <tt>max</tt> is defined. * A memory allocation may fail if it attempts to increase the * used memory such that <tt>used > committed</tt> even * if <tt>used <= max</tt> would still be true (for example, * when the system is low on virtual memory). * </td> * </tr> * </table> * </ul> * * Below is a picture showing an example of a memory pool: * <p> * <pre> * +----------------------------------------------+ * +//////////////// | + * +//////////////// | + * +----------------------------------------------+ * * |--------| * init * |---------------| * used * |---------------------------| * committed * |----------------------------------------------| * max * </pre>实验:
import java.util.ArrayList;import java.util.List;public class VMTest {public static void main(String[] args) {List<Test> l = new ArrayList<Test>();while(true) {try {Thread.sleep(1);l.add(new Test());} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}class Test {int[] a = new int[2560];}相当于每秒钟分配10M内存。
启动参数 -Xmx512m -Xms10m
结果:
init:10485760 略小于xms的10m
max:477233152 略小于xmx的512m
committed和used不停地增大,used始终小于committed,40几秒后达到max
,报java.lang.OutOfMemoryError: Java heap space错误。
结论:init约等于xms的值,max约等于xmx的值。used是已经被使用的内存大小,committed是当前可使用的内存大小(包括已使用的),committed >= used。committed不足时jvm向系统申请,若超过max则发生OutOfMemoryError错误。
- JVM中MemoryUsage中init,committed,used,max的含义
- JVM中MemoryUsage中init,committed,used,max的含义
- java 中>>>的含义
- C++ 中 \ 的含义
- Linux中init的命令
- matlab中Max的用法
- matlab中max的用法
- Action 中 Response already committed 解决办法
- init.rc的disabled含义
- [HKEY_LOCAL_MACHINE\init]键值的含义
- 在eXtremeDB中,MVCC模式Read Committed隔离级别的问题
- 对SQL Server中read committed隔离级别的全新认识 S X锁
- 去除oracle中的sql脚本中含有"records committed..."和"commit;"的行
- 计算机网络中“端口”的含义
- java中this的含义?
- 股票中PE的含义
- LotusScript中Option 的含义
- c中static的含义
- 面向对象设计原则及类和类的关系
- hdu 2874 Connections between cities
- Android - LayoutInflater
- 历史名人2——居鲁士
- Unity3D 事件处理函数
- JVM中MemoryUsage中init,committed,used,max的含义
- hdu_2167_Pebbles
- python3.3.1 pythonchallenge 通关之level 3
- go语言学习---错误
- c# 文件的编译
- MVC4角色授权
- 地址空间
- Cisco与Linux的NAT
- POJ 1125 Stockbroker Grapevine Floyd算法