下载此文档

java内存分析精选.doc


文档分类:IT计算机 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
java内存分析精选.doc在JAVA中,有六个不同的地方可以存储数据:寄存器(register)。这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是容存器的数量极其有限,所以寄存器山编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。堆栈(stack)。位于通用RAM中,但通过它的“堆栈指针”可以从处理器哪里获得支持。堆栈指针若向下移动,则分配新的内存:若向上移动,则释放那些内存。这是一种快速有效的分配存储方法,仅次于寄存器。创建程序时候,JAVA编译器必须知道存储在堆栈内所有数据的确切大小和生命周期,因为它必须生成相应的代码,以便上下移动堆栈指针。这…约束限制了程序的灵活性,所以虽然某些JAVA数据存储在堆栈中一别是对象引用,但是JAVA对象不存储其中。堆(heap)。一种通用性的内存池(也存在于RAM中),用于存放所以的JAVA对象。堆不同于堆栈的好处是:编译器不需要知道要从堆里分配多少存储区域,也不必知道存储的数据在堆里存活多长时间。因此,在堆里分配存储有很大的灵活性。当你需要创建一个对象的时候,只需要new写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配。当然,为这种灵活性必须要付出相应的代码。用堆进行存储分配比用堆栈进行存储存储需要更多的时间。静态存储(staticstorage)。这里的“静态”是指“在固定的位置”。静态存储里存放程序运行时一直存在的数据。你可用关键字static来标•识一个对象的特定兀素是静态的,但JAVA对象本身从来不会存放在静态存储空间里。常量存储(constantstorage)。常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。有时,在嵌入式系统中,常景本身会和其他部分分割离开,所以在这种情况下,可以选择将其放在ROM中非RAM存储。如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。上面这段话摘取之HhinkinginJava》』堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new建立,它们不需要程序代码来显式的释放。堆是由垃圾FI收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,山于要在运行时动态分配内存,存取速度较慢。java中的对象和数组都存放在堆中。栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int,short,long,byte,float,double,boolean,char)和对象引用。栈有一个很重要的特殊性,就是存在栈中的数据可以共弟假设我们同时定义:inta二3;intb=3:编译器先处理inta=3:首先它会在栈中创建一个变量为a的引用,然后查找栈中是否有3这个值,如果没找到,就将3存放进来,然后将a指向3。接看处理intb=3:在创建完b的引用变量后,因为在栈中已经有3这个值,便将b直接指向3。这样,就出现了a与b同时均指向3的情况。这时,如果再令a二4;那么编译器会重新搜索栈中是否有4值,如果没有,则将4存放进来,并令a指向4;如果己经有了,则直接将a指向这个

java内存分析精选 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数5
  • 收藏数0 收藏
  • 顶次数0
  • 上传人ttteee8
  • 文件大小176 KB
  • 时间2020-06-27
最近更新