簡體   English   中英

Java應用程序內存大小

[英]Java application memory size

當IntelliJ或Eclipse正在運行時,我可以從底部的進度條看到它們在應用程序內部使用了多少堆...它總是指示一個512 MB的子值,它是啟動時分配的最大大小。 現在在很多情況下,如果我從操作系統(Linux)看,它說該應用程序使用大約1300 MB,我理解庫,堆棧,內存映射文件,...不在堆...但為什么差別那么大? 通常有大約1GB的差異......為什么?

謝謝。

可以通過此圖像解釋JVM內存使用情況:

JVM內存使用情況

如您所見,它不僅僅是-Xmx 總進程內存還包括-XX:PermSize ,所有線程的堆棧大小,JIT和其他內部使用的JVM內存。 不要忘記也包含在進程內存中的內存映射文件。 IntelliJ IDEA將內存映射文件用於緩存,因此它可以添加幾百兆字節。

如果您需要詳細信息,請使用JConsole或YourKit等分析器。

值得記住的是,Java在啟動時分配了最大堆大小,這顯示在虛擬內存大小中。 (默認情況下,這與您擁有的內存量成比例)這可能比實際使用的主內存大得多。

我懷疑你正在看這個虛擬內存而不是常駐內存。

如果你在linux上使用pmap,你可以看到所有內存映射區域及其大小。

如果在Windows上使用打開的項目重新啟動IntelliJ,則表示它使用35 MB的大約100 MB,最大使用494 M. 在任務管理器中,它說大小為173 MB私有,總共196 MB。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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