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

关于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,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?