【发布时间】:2012-10-19 21:21:42
【问题描述】:
我想知道如何确定 java 分配的内存。我有一个内存要求有限的程序。当我分配一个特定大小的数组时,我注意到 JVM 分配的内存是这个大小的两倍:
例如:在我分配一个数组之前:
runtime.totalMemory() 15 MB
runtime.freeMemory(): 14 MB
在这一行之后:char [] xxx = new char[4 * 1024 * 1024];
runtime.totalMemory() 15 MB
runtime.freeMemory(): 6 MB
因此,可用内存量从 14 MB 下降到 6 MB。即使我的阵列只有 4 MB。我尝试过不同的东西数组,它总是一样的。 java为什么要分配两倍的数组大小?
谢谢
【问题讨论】:
-
请记住,
char是 16 位,因此 400 万chars 是 8 MB,而不是 4 MB。