您的位置:程序门 -> java -> j2se / 基础类



int i=1;intj=1;开辟了多大的内存


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


int i=1;intj=1;开辟了多大的内存
发表于:2007-01-23 09:45:59 楼主
rt
我觉得总共就在栈中开辟了4个字节的空间,因为栈中数据共享
right?
发表于:2007-01-23 10:14:131楼 得分:0
没有深究不敢乱言
不过你得问法不确切

i和j作为变量本身也是要占用空间的
发表于:2007-01-23 10:26:482楼 得分:0
你又说出了我的第二个疑问,就是到底i,j占不占内存?
你的意思是内存中肯定是不止4个字节,还要给i,j再分配空间。我问过一些人,他们的答案都是i,j不占内存,根本就没有i,j的地方,只有4个字节放1。不理解,高手解释一下
发表于:2007-01-23 13:55:153楼 得分:0
up
发表于:2007-01-23 18:20:064楼 得分:0
blog   更新:
  think   in   java   各章后练习答案.....
  http://blog.csdn.net/heimaoxiaozi/
发表于:2007-01-23 20:45:095楼 得分:0
我是新手   我的理解是  

应该是1在堆中开辟了4个字节的空间     而i和j是在栈中创建的引用   指向这个空间  
举个例子
就和文件名和文件本身的内容的道理一样     你建个文件   文件名再长   文件里没内容   他的大小也是0
他只不过是一个指向堆空间中的引用.
发表于:2007-01-24 10:34:076楼 得分:0
2
发表于:2007-01-24 10:35:057楼 得分:0
journeydj()   (   )   信誉:100         blog  

================================

java里面基本型应该在   栈   中开辟内存的,而不是堆。
发表于:2007-01-24 11:20:128楼 得分:0
int   i   =   1;     int   j   =   1;   本身“1”会在常量池中占4个字节(int型32bit)。

i和j
如果是类的成员变量,那么在类被创建的时候存放在本类的runtime   constant   pool中的field   array中,至于空间,我没有研究过,因为在分配空间的时候还要对访问控制进行限制(本例是default)和其他许多相关的设定,与具体的jvm实现有关。

如果是局部变量,则又是另一种内存分配方法。

另外,还要考虑是否是多线程的环境,如果是,那么在每个线程中还会有它们的副本。

上面的说法可能是有问题的:),楼下的接着说吧。
发表于:2007-01-24 13:57:519楼 得分:0
学习一下

-----------------------
http://blog.xerik.cn   (专注于java技术)


快速检索

最新资讯
热门点击