java接触了一段时间了...但是自己对于java还没深层的理解以及对计算机内部的东西的了解也没跟上节奏.
现在关于一点东西想请教下各位.
java中new一个自定义的对象时,该对象本身是不是在堆(Heap)中存储的啊?也就是说对象空间是分配在堆(Heap)中的?
然后这个对象对应的引用类型(Reference)是不是存储在栈(Stack)中的啊?
如果是这样的话,这个对象的引用类型(reference)存储在栈(Stack)中的值是不是就是该对象存储在堆(Heap)中的地址值?
java接触了一段时间了...但是自己对于java还没深层的理解以及对计算机内部的东西的了解也没跟上节奏.
现在关于一点东西想请教下各位.
java中new一个自定义的对象时,该对象本身是不是在堆(Heap)中存储的啊?也就是说对象空间是分配在堆(Heap)中的?
然后这个对象对应的引用类型(Reference)是不是存储在栈(Stack)中的啊?
如果是这样的话,这个对象的引用类型(reference)存储在栈(Stack)中的值是不是就是该对象存储在堆(Heap)中的地址值?
你的理解是正确的;
我们说的堆、栈什么的,其实都是内存区,用来存放运行时数据,JVM会自动的去管理它们,一旦对象不再使用(也即该对象的地址不再被引用),如果垃圾收集器启动了,就会进行清理,并收回不再被引用的对象占用的空间,即释放内存空间。