簡體   English   中英

為什么Java應用程序占用大量內存?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM