[英]Why does java application take much memory?
我有一個小的Java應用程序,它基本上是一個命令行實用程序,它可以休眠99%的時間,每天運行一次,以在特定位置復制文件。 該應用程序占用的內存為10 Mb。 當然,這並不是一個很大的數目,但是看起來該應用程序占用了更多的內存。 您能否建議如何減少該應用程序的內存量?
我這樣運行:
java -Xmx12m -jar c:\\copyFiles\\copyFiles.jar
您允許應用程序使用大約12 MB的空間,因為對JVM使用了-Xmx12m
參數。 Java在內存方面有點浪費。 您可以減少應用程序可以使用的最大內存量:
-Xmx10k
最多可以使用10 KB的內存。
-Xmx10m
最多可以使用10 MB的內存。
-Xmx10g
最多可以使用10 GB的內存。
隨意混合此設置,但要小心。 如果超過設置的數量,則會拋出OutOfMemory-exception。
AFAIK在很大程度上取決於所使用的垃圾收集器和jvm版本,但是由於許多原因,通常VM並不非常渴望將內存還給OS。 這里是關於同一主題的更廣泛的討論
從jdk-12開始,有這個JEP:
http://openjdk.java.net/jeps/346
這將指示VM(帶有某些標志)在“計划的”垃圾收集器周期發生后將內存還給OS-這是由一些新引入的標志控制的; 閱讀JEP以了解更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.