关于 java Heap Memory 你要知道的10点
2014-04-29 11:44
337 查看
原文:10 points about Java
Heap Space or Java Heap Memory
对一个java developer来说,知道java中的Heap,设置Heap的大小,分析Heap中的Memory的回收是非常重要的。
java中什么是Heap Space?
当一个java程序启动JVM,从操作系统那里取得一些内存,JVM就从这些内存来满足它的需要,这些内存中的一部分就作为Heap了。Heap在内存地址中从底部开始,往上移动。当不论用什么方式创建一个对象时,给对象分配的内存就在Heap中,当对象die或者Garbage Collector回收内存时,对象使用的内存还给Heap
Space。了解更多Garbage Collector。
怎么增加java Heap size?
在大部分32位的Sun JVM上默认Heap Size是128M,但这个因JVM不同而不同。
在jdk 5 及以后,可以使用图形化工具JConsole查看JVM及java application的内存使用情况。
-Xms Heap的初始大小
-Xmx Heap的最大大小
-Xmn Heap中new generation大小
更多java -X
java的堆和垃圾回收器
java中对象创建在堆内,垃圾回收器工作在堆内,为Heap回收内存空间。
为了Garbage Collection工作,Heap被分成3个部分:New Generation,Old or Tenured Generation,Perm
space。
New
Generation用于存放新创建的对象,随着程序运行,有些对象dies,但仍然live,被GC移到Old or Tenured Generation。Perm space存放类和方法的Meta data,String pool,Class层面的详细信息。
java中的OutOfMemoryError
当java Heap达到它的默认最大值或者-Xmx指定的值,无法给新创建的object分配空间了,就会抛出“OutOfMemoryError”,在抛出前,JVM会先执行GC,如果GC后还是这样,那就抛出该异常。要解决这个问题,需要明白你的程序都创建了哪些对象,这些对象占用了多少内存,使用profiler或者heap
analyser来跟踪分析该异常。"java.lang.OutOfMemoryError:
Java heap space"意思是java Heap没有足够的空间了,也无法往大expand。 "java.lang.OutOfMemoryError:
PermGen space" 意思是java Heap的Prem Space满了,无法再加载一个新类或者分配一个String了。
java Heap Dump
java
Heap Dump是java Heap memory在某一时间点的snapshot。对分析,定位内存泄露或者OutOfMemoryError很有用。jdk提供了这样的工具,用“jmap”搞一张Heap Dump,用“jhat”来分析Heap Dump.
Heap Space or Java Heap Memory
对一个java developer来说,知道java中的Heap,设置Heap的大小,分析Heap中的Memory的回收是非常重要的。
java中什么是Heap Space?
当一个java程序启动JVM,从操作系统那里取得一些内存,JVM就从这些内存来满足它的需要,这些内存中的一部分就作为Heap了。Heap在内存地址中从底部开始,往上移动。当不论用什么方式创建一个对象时,给对象分配的内存就在Heap中,当对象die或者Garbage Collector回收内存时,对象使用的内存还给Heap
Space。了解更多Garbage Collector。
怎么增加java Heap size?
在大部分32位的Sun JVM上默认Heap Size是128M,但这个因JVM不同而不同。
在jdk 5 及以后,可以使用图形化工具JConsole查看JVM及java application的内存使用情况。
-Xms Heap的初始大小
-Xmx Heap的最大大小
-Xmn Heap中new generation大小
更多java -X
C:\Users\Admin>java -X -Xmixed mixed mode execution (default) -Xint interpreted mode execution only -Xbootclasspath:<directories and zip/jar files separated by ;> set search path for bootstrap classes and resources -Xbootclasspath/a:<directories and zip/jar files separated by ;> append to end of bootstrap class path -Xbootclasspath/p:<directories and zip/jar files separated by ;> prepend in front of bootstrap class path -Xdiag show additional diagnostic messages -Xnoclassgc disable class garbage collection -Xincgc enable incremental garbage collection -Xloggc:<file> log GC status to a file with time stamps -Xbatch disable background compilation -Xms<size> set initial Java heap size......................... -Xmx<size> set maximum Java heap size......................... -Xss<size> set java thread stack size -Xprof output cpu profiling data -Xfuture enable strictest checks, anticipating future default -Xrs reduce use of OS signals by Java/VM (see documentation) -Xcheck:jni perform additional checks for JNI functions -Xshare:off do not attempt to use shared class data -Xshare:auto use shared class data if possible (default) -Xshare:on require using shared class data, otherwise fail. -XshowSettings show all settings and continue -XshowSettings:all show all settings and continue -XshowSettings:vm show all vm related settings and continue -XshowSettings:properties show all property settings and continue -XshowSettings:locale show all locale related settings and continue
java的堆和垃圾回收器
java中对象创建在堆内,垃圾回收器工作在堆内,为Heap回收内存空间。
为了Garbage Collection工作,Heap被分成3个部分:New Generation,Old or Tenured Generation,Perm
space。
New
Generation用于存放新创建的对象,随着程序运行,有些对象dies,但仍然live,被GC移到Old or Tenured Generation。Perm space存放类和方法的Meta data,String pool,Class层面的详细信息。
java中的OutOfMemoryError
当java Heap达到它的默认最大值或者-Xmx指定的值,无法给新创建的object分配空间了,就会抛出“OutOfMemoryError”,在抛出前,JVM会先执行GC,如果GC后还是这样,那就抛出该异常。要解决这个问题,需要明白你的程序都创建了哪些对象,这些对象占用了多少内存,使用profiler或者heap
analyser来跟踪分析该异常。"java.lang.OutOfMemoryError:
Java heap space"意思是java Heap没有足够的空间了,也无法往大expand。 "java.lang.OutOfMemoryError:
PermGen space" 意思是java Heap的Prem Space满了,无法再加载一个新类或者分配一个String了。
java Heap Dump
java
Heap Dump是java Heap memory在某一时间点的snapshot。对分析,定位内存泄露或者OutOfMemoryError很有用。jdk提供了这样的工具,用“jmap”搞一张Heap Dump,用“jhat”来分析Heap Dump.
相关文章推荐
- 关于OutOfMemoryError java heap space 解决方法
- 关于 java.lang.OutOfMemoryError: Java heap space 的解决方法
- 关于java的堆(stack)和栈(heap)-Java Heap Space vs Stack – Memory Allocation in Java
- where memory is allocate outside of Java heap. gc
- java.lang.OutOfMemoryError: Java heap space
- eclipse启动项目报出jvm内存溢出异常解决办法java.lang.OutOfMemoryError: Java heap space
- java.lang.OutOfMemoryError: Java heap space解决方法
- java.lang.OutOfMemoryError: Java heap space解决方法
- java.lang.OutOfMemoryError: Java heap space解决方法
- java.lang.OutOfMemoryError: Java heap space 的解决
- java.lang.OutOfMemoryError: Java heap space——Tomcat与eclipse的JVM内存大小设置
- 关于java.lang.OutOfMemoryError: Java heap space的问题
- 【JVM】写一个使Java heap OutOfMemoryError的程序
- java.lang.OutOfMemoryError: Java heap space解决方法:即就该内存大小
- eclipse内存溢出报错:java.lang.OutOfMemoryError:Java heap space
- Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
- 关于java.lang.OutOfMemoryError:java heap space错误解决方案
- 异常:java.lang.OutOfMemoryError: Java heap space
- java.lang.OutOfMemoryError: Java heap space解决方法
- Exception in thread "main" java.lang.OutOfMemoryError: Java heap space