gpt4 book ai didi

java - 与基元 `byte` 相比,使用基元 `int` 增加了占用的空间

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:24 24 4
gpt4 key购买 nike

我有一个示例程序,正在测试其占用的内存。我不知道我哪里出了问题或者我实现了错误的事情。但是当我使用byte而不是int时,JVM占用的内存会增加。下面是两个类文件:

测试 1 类:

public class Test1 {
public Test1 node1, node2;
DATATYPE a, b; // DATATYPE is Primitive `int` or Primitive `byte`
}

类测试:

public class Test {
public static void main(String args[]) throws IOException
{
System.out.println(getMemory());

Test1 root = new Test1();
Test1 currNode = root;
for(int i = 0; i < 10000000; i++)
{
currNode.node1 = new Test1();
currNode.a = 10;
currNode.b = 10;
currNode.node2 = currNode;
currNode = new Test1();
}

System.out.println(getMemory());
}

public static String getMemory()
{
HashMap<String, Double> hm = new HashMap<String, Double>();
Runtime runtime = Runtime.getRuntime();
hm.put("\nTotal Memory ", (double) runtime.totalMemory()/(1024*1024));
hm.put("\nFree Memory ", (double) runtime.freeMemory()/(1024*1024));
hm.put("\nUsedup Memory ", (double) (runtime.totalMemory() - runtime.freeMemory())/(1024*1024));
return hm.toString();
}
}

当 DATATYPE = int 时输出 1:

{
Free Memory = 966.1398086547852,
Total Memory = 981.5,
Usedup Memory = 15.360191345214844}
{
Free Memory = 869.7226409912109,
Total Memory = 981.5,
Usedup Memory = 111.77735900878906
}

当 DATATYPE = 字节时输出 1:

{
Free Memory = 966.1398086547852,
Total Memory = 981.5,
Usedup Memory = 15.360191345214844
}
{
Free Memory = 765.0790710449219,
Total Memory = 981.5,
Usedup Memory = 216.42092895507812
}

我不知道我是否做错了什么。这可能是什么原因?

最佳答案

Byte 是一种装箱基元,它比 int、double 等基元需要更多的内存。

诸如装箱基元(例如字节、整数、 double )之类的对象引用具有额外的开销,例如类引用。

因此使用 byte 而不是 Byte 应该可以解决您的问题。

关于java - 与基元 `byte` 相比,使用基元 `int` 增加了占用的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29041655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com