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

关于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 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化