gc00003
2015-09-13 02:55
采纳率: 100%
浏览 3.5k
已采纳

关于java静态变量的存储位置

网上有很多关于类变量存储位置的文章,比如http://gao-xianglong.iteye.com/blog/2152345 说明静态变量是存储在方法区中,但是本人随便写了个例子如下:
public static Object o = new Object[999999999];
public static void main(String[] args) {
}

运行报出java.lang.OutOfMemoryError: Java heap space说明是堆溢出了,难道静态变量又存储在堆中了?
关于这块很不解,求解释

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • Robot-S 2015-09-13 02:57
    已采纳

    1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 
    2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。) 
    3. 堆:存放所有new出来的对象。 
    4. 静态域:存放静态成员(static定义的) 
    5. 常量池:存放字符串常量和基本类型常量(public stat......
    答案就在这里:java变量的存储位置
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    点赞 评论

相关推荐 更多相似问题