如何测量Clojure程序使用多少内存?
我注意到即使是小程序,也就是说
(println "Hello World")
根据时间(GNU时间), ps ,可以消耗数十兆字节的RAM 和其他类似的工具。
有没有正确的方法来检测Clojure程序的内存量 真的需要吗?
如何限制Clojure程序的内存使用量? 是否可以说“不超过1 MB”?
答案 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库)。
java -Xmx<memory>
例如:java -Xmx1024m
会将JVM限制为1 GiB。