比较排序操作中使用静态数组和java.util.ArrayList之间的内存使用情况

比较排序操作中使用静态数组和java.util.ArrayList之间的内存使用情况,java,Java,它不起作用。我们不能用长来计算吗 提前感谢,请给我一些建议回答标题中隐含的问题:“在排序操作中使用静态数组和java.util.ArrayList之间的内存使用情况”有什么不同 在Java8中:None。这是因为排序被委托给ArrayList类,该类直接使用Arrays.sort()对支持数组进行排序 在Java7及以下版本中,列表被转换为数组,数组被排序,结果被放回列表中。因此,数组的内存是的两倍,再加上排序操作本身需要的额外内存,这取决于Java的版本。 Java 8中的LinkedList

它不起作用。我们不能用长来计算吗

提前感谢,请给我一些建议

回答标题中隐含的问题:“在排序操作中使用静态数组和java.util.ArrayList之间的内存使用情况”有什么不同

在Java8中:None。这是因为排序被委托给
ArrayList
类,该类直接使用
Arrays.sort()
对支持数组进行排序

在Java7及以下版本中,列表被转换为数组,数组被排序,结果被放回列表中。因此,数组的内存是的两倍,再加上排序操作本身需要的额外内存,这取决于Java的版本。

Java 8中的
LinkedList
也会发生这种情况。

“它不工作”它会做什么?当然,您可以使用long进行计算。您不能使用类似jmh的东西吗?它非常擅长监视这样的事情:将totalM初始化为totalMemory(),但减去freemory()。这真的是你想要的吗?我猜您想将totalM初始化为freemory(),以便看到更改。@blm,
int[]n
int[]n
是一样的。两者都是
n
的有效声明,作为对
int
s数组的引用。前者很不传统。@JohnBollinger是的,我有时是个白痴:-),我肯定知道,奇怪的格式把我甩了,我从来没有见过它是那样写的,但显然它会像你说的那样工作。
Runtime rt = Runtime.getRuntime();
  long  totalM = rt.totalMemory();
  long  currentM;

  int  []n = new int[10000];
  System.out.print("10000 ints used: ");
  System.out.println(totalM - rt.freeMemory());