java - 在运行时获取 JVM 可用的内存

标签 java sorting

我正在尝试对一堆数据进行排序,以便输入到程序的数据大小可以大于 JVM 可用的内存,并且处理需要外部排序,这比 Quicksort 慢得多。

有没有办法在运行时获取 JVM 可用的内存,以便我可以尽可能使用就地排序,并且只有在数据输入太大时才切换到 Mergesort?

最佳答案

java.lang.Runtime 上查看这些方法类:

freeMemory

totalMemory

maxMemory

示例

Runtime rt = Runtime.getRuntime();
System.err.println(String.format("Free: %d bytes, Total: %d bytes, Max: %d bytes",
  rt.freeMemory(), rt.totalMemory(), rt.maxMemory()));

另请注意,如果内存总量即将耗尽,您始终可以使用 -Xmx JVM 参数分配更大数量的堆来启动 JVM;例如

java -Xmx256M MyClass

关于java - 在运行时获取 JVM 可用的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3021727/

相关文章:

java - 如何在 Java 中将扫描器字符串制作成 Stream?

java - 在本地jar到gradle项目中的阴影/阴影

java - 理解java方法的问题

c - 在 C 中合并和排序两个包含 double 的已排序数组

java - 故意许可错误

java - 将字符串数组转换为字节数组

ruby - 使用 Ruby 中的属性对对象列表进行排序

php - 如何对 PHP 数组进行 GROUP BY 和 SUM?

c++ - 在 C++ 中,如何以与从映射中检索值相同的顺序从 vector 中检索值?

mysql - 对多个父或子sql进行排序