我正在从一本名为《 Java 2:完整参考》的书中学习Java。
根据该书的输出为: 总内存为:1048568 初始可用内存:751392 垃圾回收后的可用内存:841424 分配后的可用内存:824000 分配使用的内存:17424 收集丢弃的整数后的可用内存:842640
我的输出是: 总内存为:121634816 初始可用内存:120142456 垃圾回收后的可用内存:7677000 分配后的可用内存:7635040 分配使用的内存:41960 收集丢弃的整数后的可用内存为7677960
我的问题是上面大胆提及的部分。这本书的输出中提到的“初始可用内存”小于“垃圾回收之后的可用内存”,而在我的输出中,“初始可用内存”比“垃圾回收之后的可用内存”要多。
class MemoryDemo
{
public static void main(String[] args)
{
Runtime r = Runtime.getRuntime();
long mem1, mem2;
Integer someInts[] = new Integer[1000];
System.out.println("Total memory is : " + r.totalMemory());
mem1 = r.freeMemory();
System.out.println("Initial free memory : " + mem1);
r.gc();
mem1 = r.freeMemory();
System.out.println("Free memory after garbage collection : " + mem1);
for(int i = 0; i < 1000; i++)
someInts[i] = new Integer(i);
mem2 = r.freeMemory();
System.out.println("Free memory after allocation : " + mem2);
System.out.println("Memory used by allocation : " + (mem1 - mem2));
for(int i = 0; i < 1000; i++)
someInts[i] = null;
r.gc();
mem2 = r.freeMemory();
System.out.println("Free memory after collecting discarded integers :" + mem2);
}
}
我需要对此做些解释,并在说明中附上用于下载该书的链接。代码在本书的406页上。 http://iiti.ac.in/people/~tanimad/JavaTheCompleteReference.pdf
答案 0 :(得分:3)
Java虚拟机的内存大小不是固定数量。您可以在JVM启动时进行设置。默认设置可能因实现方式和版本而异。默认值很可能取决于实际计算机内存的大小。
答案 1 :(得分:2)
这不是错误或错误。您的计算机比本书编写时拥有更多的内存。