应该都是指内存块....至于如何分配.看java
成都网站制作、网站设计、外贸网站建设服务团队是一支充满着热情的团队,执着、敏锐、追求更好,是创新互联的标准与要求,同时竭诚为客户提供服务是我们的理念。创新互联把每个网站当做一个产品来开发,精雕细琢,追求一名工匠心中的细致,我们更用心!
第一个 不懂了.有这东西么.???
二.... : 应该是在某个方法定义了一大堆 变量.比如 String ss = new String();Object obj = new Object();.... 这样的一堆东西,在程序没跑到这个方法前 就已经规明埋者定好一个内存块 给这些个东西存了.
第三个 通俗点就是 我们在程序中定义的 Static 变量.或者 在程序跑起来时 在xml配置好的字典表的java所分配的内激薯存块
, 比如 xml配置好一个map 1=男 2=女 存在数据库中的字段是1.要在页面液宴上显示 map.get(1) 就是显示男了. 而这个map不需要每次去查询出来.
个人愚见!!!
你上面写的程序有问题,我就不说了,自己看看书。
关于java内存分配是这样的:
程序代码存储在"code segment"中,静态变量和梁蠢李字符串常量存储在“data segment"区域中,局部变量存储在"stack"(栈内橡迟档闭存)中,nwe出来的东西(即对象)存储在"heap"(堆内存)中。
栈里面存放磨尘到主要是基本数据类型的局部变量和对象的引用(指向对象一种类似地址的东西)。
堆内存主要存放new出来的对象御蚂(包括数组)。
其实Java的内存结构不光包括栈和堆,还包镇游埋括代码区(加载class类文件本身)、数据区之类的。
Java把内存划分成两种:一种是栈内存,一种是堆内存。在函数中定义的一些基本类型的变量和对象的敬扰弊引用变量都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量亮族所分配的内存空间,该内存空间可以立李羡即被另作他用。堆内存用来存放由new创建的对象和数组。在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。具体的说:栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,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指向这个地址。因此a值的改变不会影响到b的值。要注意这种数据的共享与两个对象的引用同时指向一个对象的这种共享是不同的,因为这种情况a的修改并不会影响到b,它是由编译器完成的,它有利于节省空间。而一个对象引用变量修改了这个对象的内部状态,会影响到另一个对象引用变量。