我正在尝试对一堆数据进行排序,以便输入到程序的数据大小可以大于 JVM 可用的内存,并且处理需要外部排序,这比 Quicksort 慢得多。
有没有办法在运行时获取 JVM 可用的内存,以便我可以尽可能使用就地排序,并且只有在数据输入太大时才切换到 Mergesort?
最佳答案
在 java.lang.Runtime
上查看这些方法类:
示例
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/