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

标签 java

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());

它不工作。我们不能用long来计算吗?

预先感谢,请给我一些建议

最佳答案

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

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

在Java 7及以下版本中,列表被转换为数组,数组被排序,结果被放回到列表中。因此,数组的内存加倍,再加上排序操作本身需要的任何额外内存,这取决于 Java 的版本。
Java 8 中的 LinkedList 也会发生这种情况。

关于java - 比较排序操作中使用静态数组和 java.util.ArrayList 的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32853261/

相关文章:

java - 我如何在Android上使用Soap从Web服务发送和接收Hashmap

java - 二维条码检测和图像分割

java.lang.Exception : java. lang.UnsatisfiedLinkError:

java - JDBC 通过 PreparedStatement 中的 executeBatch 调用保证原子操作

java - Spring Cloud Stream Test 在消息负载中硬编码 "Hello World"

java - 如何解决错误 :java. util.concurrent.ExecutionException : java. lang.RuntimeException:没有服务器可以处理请求

java - 以编程方式向按钮添加描边

java - 这种 HashMap 中对象的惰性初始化模式是线程安全的吗?

java - 安卓 fragment : fragments inside a Frame or other layouts?

java - Android Studio 中的 Gradle 构建问题