2 jim 007 jim_007 于 2017.01.05 10:07 提问

java什么时候给类变量分配内存,注意是类变量不是对象成员变量!!!

我们知道运行程序时第一步是jvm加载.class文件到内存中,.class文件里肯定有定义的变量(这里就是一般的变量,不考虑static变量),那么类变量分配内存空间就是在这里了。
这里有个疑问,这个类变量是文本给加载的,还是按照其变量类型给分配内存空间的?

4个回答

Tiger_Zhao
Tiger_Zhao   Rxr 2017.01.05 11:05

“类变量”只是一个定义,并不存在实例,所以不存在分配内存的动作。
你不可能访问类的变量,只能访问对象实例的成员。

jim_007
jim_007 那jvm加载.class文件到内存里,处理立即加载执行的static方法变量,其他一般的方法变量是不是只是以“文本”的形式被存放于内存中?
11 个月之前 回复
oyljerry
oyljerry   Ds   Rxr 2017.01.05 21:21

class的变量这运行时加载的,属于jvm的栈帧中的局部变量区,同时运行时也可以分配堆上的数据。在运行时根据类型来分配空间。

u010747201
u010747201   2017.07.19 12:35

根据变量类型,在运行时,存放在本地局部变量表中,存储单位为slot,默认32位,long, double等为连续两个slot存储。

u010747201
u010747201   2017.07.19 12:37

刚刚说的是成员变量。类变量,既静态变量,是在运行时的准备阶段,通过变量类型,在方法区中分配内存空间,并复初始值,比如,0,null等。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!