new 出来的对象都在堆中进行分配
方法参数的传递都在栈中再具体救不了解了java 的内存关系似乎不用太操心的说
方法参数的传递都在栈中再具体救不了解了java 的内存关系似乎不用太操心的说
解决方案 »
- 一个普通的单核CPU的服务器理论上能支持多少的并发?
- 由于 J2SE基础的论坛还在维护,只能在这里问了,呵呵
- 遗传算法,或着是优化算法
- 问题解决就结贴,怎么样重载File类,错在哪里阿
- import com.mysql.jdbc.Driver;一句中com的意思?
- AWT 组件是 “线程安全的(thread-safe)”,是什么意思?
- 求救:如何将通过socket将 一个String和<CRLF>.<CRLF> 一起传给服务器端
- 今之江湖 ,谁才是一等一的JAVA高手 ,过来看招
- 请教大家!!!java如何实现多重继承?接口该如何使用?份数可以再加,只要我明白了
- 从作用域角度看,JAVA文件是不是没有用
- 如何让一个字节的数据取值范围可以是0~255? 在JAVA里byte的范围是-128~127,不符合我的要求的。请问怎么样才能实现呢?
- 新手在学习java,现在不知道该何去何从?请指导
String a="aaa";
String b="bbb";
public void f(){System.out.println("a.f()");}
public void g(){System.out.println("a.g()");}
}首先在栈中定义了A类型的引用变量a,并在堆中实例化了一个A对象,然后让a指向A对象的首地址。
class B extends A{
String a="aaa";
String b="bbb";
public void f(){System.out.println("b.f()");}
public void g(){System.out.println("b.g()");}
}
首先在栈中定义了B类型的引用变量b,并在堆中实例化了一个B对象,然后让b指向B对象的首地址。至于3,同样是产生了一个B对象,只不过现在的引用变量不是B类型的,而是其父类的类型,也就是多态。
存不存它的成员变量,函数名。怎么存?
使用了继承之后,又变成怎么样?
我知道多态的时候,c++中会维护一长vtable表,来判断具体对象的方法是哪个。
但是不知道他的变量的情况。
1.寄存器
2.栈
3.堆
4.静态存储空间
5.常量存储空间
6.Non-RAM存储空间
来看看他们在内存中的位置
把它想像为一个圆的话,上下一分为二,上面为全局区(放静态的变量,方法列表,及字符串池等),下面再一分为二(左右分),左边为对象句柄(引用就是指向这个句柄的),对象句柄实际是一对指针,其中一个指针指向方法列表,一个指向对象(对象是放在右边空间的,数据成员存在于此)具体内容可以参考<java虚拟机规范>这本书