由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 关于数组的内存
相关主题
再问个java的蠢问题,别骂我问大家一个狠诡异的事情,java 导致关机。
关于J2EE vs. .NETjava如何keep大数组在内存中?
这里有做J2ME的吗?Where I can find comparison of JVMs
如何把函数体放入到try ... catch ... 中JAVA中文TELNET MwTerm 1.000 Final
Android的VM还挺不错的jre classpath
对J2EE的几个迷惑 (转载)Be clear about one thing first
新手学JAVA,遇到一个难题,有大侠愿意帮忙吗?求助Java Image Tools or API
java最大用多少内存[转载] 有人在用NetBeans IDE么?
相关话题的讨论汇总
话题: int话题: 内存话题: 数组话题: java话题: 1000
进入Java版参与讨论
1 (共1页)
j*******s
发帖数: 81
1
java里开辟数组的时候,好像有很多额外的开销啊。
[1000][1] 比 [1][1000] 需要多花费N倍的内存,是不是因为 [1000][1]中开辟
1000个一维数组的时候的额外开销呢?
多谢指点!
j*******s
发帖数: 81
2
在网上搜到一个这个:
这是一个与Java内存管理系统相关的问题。由于无论Java语言规范或VM规范都没有明确
要求内存管理系统的具体实现,所以这个问题依赖于具体的JVM。 一般而言,一个对象
的size大于一个int的size, 而int[50][2] 包含了50个int[], 而int[2][50]仅包含2个
int[], 故int[50][2]的size至少不会小于int[2][50]. 对于SUN J2SE 5.0 JVM, 可以
用Runtime.freeMemory()来估测这个问题。java.lang.management 包中也包含了估测
内存的方法。试一下便知.
测试语句:
long aa = Runtime.getRuntime().freeMemory();
int[][] test_0 = new int[50][2];
long bb = Runtime.getRuntime().freeMemory();
int[][] test_1 = new int[2][50];
long cc = Runtime.getRuntim
j*******s
发帖数: 81
3
但是不知道原理,这些额外的内存到底分配到什么地方去了?
o***g
发帖数: 2784
4
去水木java版找zms的一篇讲内存分配的文章
好像是每一个object至少要多4bytes

【在 j*******s 的大作中提到】
: java里开辟数组的时候,好像有很多额外的开销啊。
: [1000][1] 比 [1][1000] 需要多花费N倍的内存,是不是因为 [1000][1]中开辟
: 1000个一维数组的时候的额外开销呢?
: 多谢指点!

B*********h
发帖数: 800
5
嗯,是一个object header的概念

【在 o***g 的大作中提到】
: 去水木java版找zms的一篇讲内存分配的文章
: 好像是每一个object至少要多4bytes

1 (共1页)
进入Java版参与讨论
相关主题
[转载] 有人在用NetBeans IDE么?Android的VM还挺不错的
java.lang.ClassFormatError对J2EE的几个迷惑 (转载)
有人写java手机程序么?新手学JAVA,遇到一个难题,有大侠愿意帮忙吗?
Java virtual machinejava最大用多少内存
再问个java的蠢问题,别骂我问大家一个狠诡异的事情,java 导致关机。
关于J2EE vs. .NETjava如何keep大数组在内存中?
这里有做J2ME的吗?Where I can find comparison of JVMs
如何把函数体放入到try ... catch ... 中JAVA中文TELNET MwTerm 1.000 Final
相关话题的讨论汇总
话题: int话题: 内存话题: 数组话题: java话题: 1000