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

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