Java内存结构模型
2015-08-07 18:39
399 查看
JVM为了方便管理内存空间,充分使用内存空间,把使用到的内存空间,分为以下几块区域,每块区域只存放特定的信息
堆:
存放信息:所有的对象和数组
这块内存区域又分为新生代、老年代。新生代用于存放刚产生的新对象,老年代存放年长的对象,多次GC都没有被回收的对象。新生代又分为三块区域:Eden:刚产出的对象,S0 1:至少经过一次GC活下的对象。之所以这样区分的目的,是为了垃圾回收快速选择要回收的对象
所有线程共享
内存溢出时抛出:OutOfMemoryError
设置该内存块大小:-Xms512m -Xmx1024m
栈:
存放信息:方法的局部变量、部分结果,并参与方法的调用和返回
栈分为,虚拟机栈和本地方法栈:两者区别不大,本地方法栈,主要是Native方法使用到内存空间,这部分由C语言实现。
每个线程都会有一个私有的栈空间
内存溢出时抛出:StackOverflowError 和OutOfMemoryError
设置该内存块大小:-Xss 1M
持久代:
存放信息:类的元数据,比如类的完整名称,父类的完整名称,类型修饰符,类的方法信息等等
设置该内存块大小:-XX:PermSize=256M -XX:MaxPermSize=512M
堆:
存放信息:所有的对象和数组
这块内存区域又分为新生代、老年代。新生代用于存放刚产生的新对象,老年代存放年长的对象,多次GC都没有被回收的对象。新生代又分为三块区域:Eden:刚产出的对象,S0 1:至少经过一次GC活下的对象。之所以这样区分的目的,是为了垃圾回收快速选择要回收的对象
所有线程共享
内存溢出时抛出:OutOfMemoryError
设置该内存块大小:-Xms512m -Xmx1024m
栈:
存放信息:方法的局部变量、部分结果,并参与方法的调用和返回
栈分为,虚拟机栈和本地方法栈:两者区别不大,本地方法栈,主要是Native方法使用到内存空间,这部分由C语言实现。
每个线程都会有一个私有的栈空间
内存溢出时抛出:StackOverflowError 和OutOfMemoryError
设置该内存块大小:-Xss 1M
持久代:
存放信息:类的元数据,比如类的完整名称,父类的完整名称,类型修饰符,类的方法信息等等
设置该内存块大小:-XX:PermSize=256M -XX:MaxPermSize=512M
相关文章推荐
- Java获取当前进程的所有线程
- Java Annotation自定义注解详解
- Codeforces Gym 100418A A - A+-B java高精度
- 对象排序 — java 7 collection详解(三)
- java 7 collection 详解(二)
- java nio的使用
- java 7 collection 详解(一)
- Java使用UDP协议收发数据简单实现
- java源程序加密解决方案(基于Classloader解密)
- java DES 加密解密 (二)
- java DES加密,解密 (一)
- Java MD5加密类
- java对比IO和NIO的文件读写性能测试
- 位运算
- java编程思想随笔(1)
- Arcgis for Java(一)在应用程序中添加地图
- Java阅读word程序说明文件
- Spring中如何配置Hibernate事务
- java volatile关键字
- 搭建SpringMVC开发环境