日期:2014-05-20  浏览次数:20856 次

再再论 类的static数据域到底放在哪里? 栈? 堆? 静态存储区? String pool? Constant Pool???
我就不相信这个问题,始终无法弄明白。。

------解决方案--------------------
天呐,这个对你用Java有什么帮助吗?你知道在内存里不就行了。你干吗要较劲呢...我有点不解...
------解决方案--------------------
内存区域 一般被分为 4个部分 ,数据段,代码段,堆,栈,数据段也就是通常所说的的静态存储区域,所以呢,static 一般是存储在数据段的,另外堆是用来存储需要动态分配空间的变量,通俗的说就是new出来的。而栈呢就是存储我们通常所说的局部变量,嘿嘿,这个是一个高手给我讲的,不对的请指出来哦,谢谢拉
------解决方案--------------------
探讨
内存区域 一般被分为 4个部分 ,数据段,代码段,堆,栈,数据段也就是通常所说的的静态存储区域,所以呢,static 一般是存储在数据段的,另外堆是用来存储需要动态分配空间的变量,通俗的说就是new出来的。而栈呢就是存储我们通常所说的局部变量,嘿嘿,这个是一个高手给我讲的,不对的请指出来哦,谢谢拉

------解决方案--------------------
探讨
在我的另一贴里,好多高手,说:1。JAVA没有静态存储区。
另一说:JAVA的static数据存在栈里。

------解决方案--------------------
探讨
引用:
在我的另一贴里,好多高手,说:1。JAVA没有静态存储区。
另一说:JAVA的static数据存在栈里。

java没有静态数据区,static数据是在堆里。
记住就行了,要证明的话自己去看虚拟机规范,去分析虚拟机的代码,别人说的未必是正确的。
这个问题实在是无聊,Java 虚拟机规范那本书里面有介绍,运行时数据区一共几部分我也贴过了,不想再说。

这个对你学习java基本没有什么意义


------解决方案--------------------
探讨
zhang 兄,另一贴,你回的也比较多。
比较赞赏你的看法,可你的看法还是模糊。

------解决方案--------------------
JAVA 和C++最大的区别之一好像就是在这里
C++有专门的静态存储区,JAVA 没有

PS ,大一曾经问过老师,3个教授回答的答案完全不同了,然后他们给我的一致答复就是:细节的别去研究了
------解决方案--------------------
探讨
JAVA 和C++最大的区别之一好像就是在这里
C++有专门的静态存储区,JAVA 没有

PS ,大一曾经问过老师,3个教授回答的答案完全不同了,然后他们给我的一致答复就是:细节的别去研究了

------解决方案--------------------
虚拟机规范我没看过,但是静态变量绝对不在堆上,堆上都是动态的东西