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设置最大直接内存大小。

(2)java堆内存的更多相关文章

  1. Java堆内存的十个要点

    Java中的堆空间是什么? 当Java程序开始运行时,JVM会从操作系统获取一些内存.JVM使用这些内存,这些内存的一部分就是堆内存.堆内存通常在存储地址的底层,向上排列.当一个对象通过new关键字或 ...

  2. 关于java堆内存溢出的几种情况(转)

    [情况一]: java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环: 如果是java堆内存不够 ...

  3. java堆内存详解

    http://www.importnew.com/14630.htmljava堆的特点<深入理解java虚拟机>是什么描述java堆的 Java堆(Java Heap)是java虚拟机所管 ...

  4. Java堆内存溢出模拟

    先了解一下Java堆: 关于Java内存区域的分配,可以查看Java运行时数据区域一篇文章. Java堆是虚拟机内存管理中最大的一块区域,该区域是线程共享的,某Java进程中所有的线程都可以访问该区域 ...

  5. Java堆内存不足

    1)使用IDEA开发程序时有时候会提示“Java Heap space error”,说明IDEA默认配置的Java堆内存不足,程序需要更多的堆内存. 2)堆(Heap)和非堆(Non-heap)内存 ...

  6. Java堆内存划分

    根据对象的存活率(年龄)Java堆内存划分为3种,新生代,老年代,永久代: 1.新生代 比如我们在方法中区new一个对象,那这方法调用完毕后,对象就会被回收,这就是一个典型的新生代对象. 现在的商业虚 ...

  7. Java堆内存又溢出了!教你一招必杀技

    JAVA堆内存管理是影响性能主要因素之一.堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的. 先看下JAVA堆内存是如何划分的,如图: JVM内存划分为 ...

  8. Java堆内存中为什么有两个survival区及为什么与年轻代比例是1:1:8?

    Java堆内存分为年轻代和老年代,其中,年轻代分为Eden区和survival区,survival又分为fromSurvival和toSurvival. 首先第一个问题:为什么要有Survival区? ...

  9. MAT工具定位分析Java堆内存泄漏问题方法

    一.MAT概述与安装 MAT,全称Memory Analysis Tools,是一款分析Java堆内存的工具,可以快速定位到堆内泄漏问题.该工具提供了两种使用方式,一种是插件版,可以安装到Eclips ...

随机推荐

  1. WPF xmal绑定数据,当显示数据过长用省略号代替的方法

    有时候会遇到这种情况,用了数据绑定显示的数据太长时,如何让过长的数据显示规定的长度,多余的用省略号代替呢,自己写了个简单的小例子和大家分享一下^_^,我也是学习WPF不久,这是我第一次写博客,有问题还 ...

  2. 浅析nginx的负载均衡

    Nginx 的 HttpUpstreamModule 提供对后端(backend)服务器的简单负载均衡.一个最简单的 upstream 写法如下: upstream backend { server ...

  3. js中arguments的作用

    在javascript函数体内,标识符arguments具有特殊含义.它是调用对象的一个特殊属性,用来引用Arguments对象. Arugments对象就像数组,注意这里只是像并不是哈. javas ...

  4. 微软职位内部推荐-SDE

    微软近期Open的职位: Organization Summary:Engineering, Community & Online (ECO) is looking for a great & ...

  5. having与where区别

    having后可以跟组函数如avg(sal)而where后不可以有, 如果条件不是必须使用组函数最好还是使用where

  6. 关于java中sizeof的问题

    因为java没有提供现成的函数去计算对象的内存空间,不过可以用大量产生某个对象然后计算平均值的方法近似获得该对象占用的内存. 虽然这种方法不是很准,但是也在一定程度上计算出来了对象所占用的内存空间,下 ...

  7. 在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新。

    UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0 ...

  8. [转载]jquery ajax/post/get 传参数给 mvc的action

    jquery ajax/post/get 传参数给 mvc的action 1.ActionResult Test1     2.View  Test1.aspx 3.ajax page 4.MetaO ...

  9. Oracle----Operator

    Operator Description = Equal <> or != Not equal < Less than > Greater than <= Less th ...

  10. mysql数据库备份执行计划

    为什么需要数据备份?如果数据库因为人为或其他不可控的因素导致数据库数据丢失或损坏,导致的后果将会非常严重. 为什么需要执行计划?备份操作如果每天人工管理的话,将会非常麻烦,需要借助工具来制定执行计划, ...