测量Clojure程序使用多少内存的最佳方法是什么?

时间:2014-10-06 09:33:43

标签: clojure jvm memory-profiling

如何测量Clojure程序使用多少内存?

我注意到即使是小程序,也就是说

(println "Hello World")
根据时间(GNU时间), ps

可以消耗数十兆字节的RAM 和其他类似的工具。

有没有正确的方法来检测Clojure程序的内存量 真的需要吗?

如何限制Clojure程序的内存使用量? 是否可以说“不超过1 MB”?

1 个答案:

答案 0 :(得分:3)

Clojure在JVM上运行,因此您可以检查它使用多少内存并限制其内存,就像在Java中一样。

检查内存使用情况:

final double freeMemory = Runtime.getRuntime().freeMemory() / (double) 1024;
final double totalMemory = Runtime.getRuntime().totalMemory() / (double) 1024;
final double usedMemory = totalMemory - freeMemory;

在Clojure中(请原谅我可怜的成语技巧,仍然是Clojure的初学者)

(float (/ (- (-> (java.lang.Runtime/getRuntime) (.totalMemory)) (-> (java.lang.Runtime/getRuntime) (.freeMemory))) 1024))

(您可以使用Java互操作轻松转换为Clojure,不确定是否已有Clojure库)。

Limit JVM maximum memory

java -Xmx<memory>

例如:java -Xmx1024m会将JVM限制为1 GiB。