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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张超超 黑马帝   /  2012-4-20 18:58  /  2752 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

程序运行时的对象存储在哪里?内存又是如何分配的呢?有六个地方:

寄存器(Register)——数量少但是最快的存储区(在CPU内)
  用于存储Java程序运算过程的变量,由Java编译器根据运行时需求分配。

堆栈(Stack)——速度仅次寄存器(在RAM(随机访问存储器)内)
  用于
快速分配内存,特别是“对象引用”。创建程序时,Java编译器需要知道存储在堆栈里的所有数据的确切大小和存活时间,因为会生成相应的代码,以便上下移动堆栈指针。

堆(Heap)——通用性的内存池(在RAM内)
  用于存储Java的所有对象(每new()一个对象,就会在堆中分配一个对象的存储空间。),比堆栈更具灵活性。因为编译器不需要知道要从堆中分配多少空间,也不必需要知道数据在堆中的存活时间。自然,这种灵活性是要付出时间上的代价。

静态存储(Static Storage)——
某“固定的”存储空间(在RAM内)
  用于存储static的Java数据,但是注意static的Java对象仍存储在堆中,只不过在静态存储空间,会用static标识其中特定的元素。

常量存储(Constant Storage)——
某“固定的”存储空间(有时在某些嵌入式系统中,在ROM(只读存储器)内)
  用于分离常量和变量。

非RAM存储(no-RAM Storage)——程序外的数据存储(磁盘或者机器间的数据流)
  例如“流对象”和“可持续化对象”。




1 个回复

倒序浏览
沙发,顶了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马