java 虚拟机堆内存划分--新生代与老年代GC
来源:互联网 发布:网络布线怎么做 编辑:程序博客网 时间:2024/04/28 20:11
摘要: 堆设置 -Xms :初始堆大小 -Xmx :最大堆大小 -XX:NewSize=n :设置年轻代大小 -XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5 -XX:MaxPermSize=n :设置持久代大小 收集器设置 -XX:+UseSerialGC :设置串行收集器 -XX:...
图1:Java堆中各代分布
Young:主要是用来存放新生的对象。
Old:主要存放应用程序中生命周期长的内存对象。
Permanent:是指内存的永久保存区域,主要存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域. 它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误
Hotspot的内存划分简单说分为三个部分,Young Generation(年轻代)、Old Generation(年老代)以及Perm Generation(永久代)。其中的Young Generation(年轻代),又分为Eden、From和To,其中From和To又统称为Survivor Spaces(幸存区)。
正常情况下,一个对象从创建到销毁,应该是从Eden,然后到Survivor Spaces(幸存区),再到Old Generation(年老代),最后在某次GC下消失。
当然,一个对象也可能直接在Eden里死掉,也可能一直在Old Generation(年老代)存活,这些都是有可能的。
关于内存划分,可以自己没事用内存分析工具看看,比如jmap、jvisualvm等等,观察一下各个区域的内存变化,结合实际去了解一下。
关于classloader机制的学习,可以结合tomcat去学习,了解清楚tomcat的classloader机制,看tomcat是如何保证各个APP之间的类隔离的
- java 虚拟机堆内存划分--新生代与老年代GC
- java虚拟机内存分配之新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- java 虚拟机--新生代与老年代GC
- logstash日志分析的配置和使用
- smarty报错:lexing failed because a rule matched an empty string解决方案
- 关于stm32中printf函数重定向问题
- 《数学之美》读书笔记(十)(十一)
- LightOJ-1395 A Dangerous Maze (II) (期望dp)
- java 虚拟机堆内存划分--新生代与老年代GC
- 功率放大器分类
- socketapi-socketbind
- CSS box model布局
- BnServiceManager 去哪了
- Python中使用XMLRPC(入门)
- css3动画
- css布局
- Linux基础(4)/Linux 目录结构及文件基本操作