您的位置:首页 > 编程语言 > Java开发

(2)java堆内存

2015-08-16 17:25 323 查看
java堆内存结构图



【名词解释】
--->eden,so,s1通称为新生代对象储区
--->tenured称为老年代对象存储区
--->s0和s1也称为from和to区域,是两块大小相等,可以互换角色的内存空间。
--->新生代的大小一般设置为真个堆内存空间的1/3或1/4左右

【行为解释】
--->绝大数情况下,对象首先分配在eden区
--->每进行一次垃圾回收,如果对象还存活,则年龄加1。
--->不同年龄的对象存放在java堆不同的区域。
--->不同区域的垃圾回收频率和算法是不相同的
--->不同区域的大小也是不同的。

【异常情况】
--->堆内存溢出java.lang.OutOfMemoryError:java heap space

【参数设定】
-->-Xmx32m 代表堆最大内存空间为32M
-->-Xms10m 代表堆的初始化内存为10M
-->-Xmn10m 代表新生代内存大小为10M
-->-XX:SurvivorRatio用来设置新生代中eden空间和from/to空间的比例关系。含义如下-XX:SurvivorRatio=eden/from=eden/to
-->-XX:NewRatio用来设置老年代和新生代的比例:含义:-XX:NewRatio=老年代/新生代


java的直接内存
【名词解释】
--->直接内存也是java程序非常重要的组成部分,特别是NIO被广泛使用后,直接内存的使用也变的非常普遍。
--->直接内存跳过java堆,使java程序可以直接访问原生堆空间。
--->直接内存大小可以通过参数-XX:MaxDirectMemorySize设定,如果不设定,默认和最大堆内存相同-Xmx。
【参数设定】
--->-XX:MaxDirectMemorySize设置最大直接内存大小。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: