Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
衡量Clojure程序使用多少内存的最佳方法是什么?_Clojure_Jvm_Memory Profiling - Fatal编程技术网

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

衡量Clojure程序使用多少内存的最佳方法是什么?,clojure,jvm,memory-profiling,Clojure,Jvm,Memory Profiling,我如何测量Clojure程序使用了多少内存 我注意到,即使是小程序,比如说 (println "Hello World") 根据时间(GNU时间),每秒可以消耗数十兆的RAM 还有其他类似的工具 有没有正确的方法来检测Clojure程序的内存量 真的需要吗 如何限制Clojure程序的内存使用? 是否可以说“占用的内存不超过1MB”Clojure在JVM上运行,这样您就可以检查它使用了多少内存,并像在Java中一样限制它的内存 检查内存使用情况: final double freeMemory

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

我注意到,即使是小程序,比如说

(println "Hello World")
根据时间(GNU时间),每秒可以消耗数十兆的RAM 还有其他类似的工具

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

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

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的初学者)

(您可以使用Java interop轻松地转换为Clojure,但不确定是否已经有用于此的Clojure库)

:

java-Xmx

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

Clojure的内存占用受JVM大小的限制。Clojure是一种很棒的语言,但是如果你特别需要一个运行在1MB以下的程序,你应该看看其他语言。@user100464:好的,也许你是对的,但是20MB怎么样?我建议你写一个Clojure程序,打印“hello world”,然后暂停阅读或线程睡眠或其他什么。暂停时,使用可用的操作系统工具查看正在使用的内存量。@user100464:为什么这么复杂?您可以只执行
time-v
,或者使用
jmap
,这根本不是问题所在。问题是如何将程序的内存限制在20MB以下默认值为1G,除非您的ram超过4GB,并且限制为物理内存的25%。很明显,-Xmx开关控制JVM使用多少堆。它不控制总内存占用。如果OP有兴趣在1MB(甚至20MB)以下运行,非堆内存也将很重要。不确定OP是否真的询问他的代码需要多少v.s。JVM分配了多少,但在后一种情况下,我不需要从分配的内存中减去使用的内存。
(float (/ (- (-> (java.lang.Runtime/getRuntime) (.totalMemory)) (-> (java.lang.Runtime/getRuntime) (.freeMemory))) 1024))
java -Xmx<memory>