A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Always, 中级黑马   /  2015-5-20 10:52  /  420 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

Java内存模型在JVM specification, Java SE 7 Edition, and mainly in the chapters “2.5 Runtime Data Areas” and “2.6 Frames”中有详细的说明。对象和类的数据存储在3个不同的内存区域:堆(heap space)、方法区(method area)、本地区(native area)。

堆内存存放对象以及数组的数据,方法区存放类的信息(包括类名、方法、字段)、静态变量、编译器编译后的代码,本地区包含线程栈、本地方法栈等存放线程
方法区有时被称为持久代(PermGen)。
所有的对象在实例化后的整个运行周期内,都被存放在堆内存中。堆内存又被划分成不同的部分:伊甸区(Eden),幸存者区域(Survivor Sapce),老年代(Old Generation Space)。

方法的执行都是伴随着线程的。原始类型的本地变量以及引用都存放在线程栈中。而引用关联的对象比如String,都存在在堆中。

3 个回复

倒序浏览
我来补充一下,只有在HotSpot虚拟机中方法区才会称为永久代(PermGen),在J9、JRockit 等虚拟机中实际上没有永久代的概念。而且HotSpot也在逐渐摒弃永久代,采用动态内存分配的方式来管理方法区。
回复 使用道具 举报
学习学习
回复 使用道具 举报
温故而知新也~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马