我有兩個Java程序。在我的電腦上,其中一個使用9MB的RAM,另一個使用77MB。但是當我將它們上傳到服務器時,相同的程序使用382MB和186MB!有沒有辦法阻止這種情況發生?爲什麼Java在我的Linux服務器上使用更多內存?
回答
如何衡量每種情況下的內存使用情況?不同的操作系統對於「內存使用情況」有不同的概念。
由於增加了指針(Java引用的參數)大小,64位系統需要比32位系統更多的內存。您在臺式機上使用32位操作系統和JVM嗎?
您是否使用不同的JVM選項?中等活動的Java應用程序通常最終會使用
-Xmx
選項允許的所有內存,從而最大限度地減少垃圾收集所花費的CPU時間。此外,默認的最大堆空間是根據可用的物理內存來確定的 - 如果服務器有更多的內存,那麼Java應用程序也必然會使用更多的內存。服務器JVM(請參閱
-server
JVM選項)具有不同的設置並優於內存使用情況下的性能。-server
選項是64位系統上的默認選項。您是否完全確定這兩種情況下的應用程序負載是相同的?
應用程序在大塊中分配虛擬內存以提高性能和效率是很常見的。沒有人會因爲沒有效果而不願意優化這些東西。如果你實際上沒有問題,沒有什麼可以解決的。
虛擬內存不是稀缺資源。試圖減少vm的消耗是浪費精力。
這取決於你是否有足夠的磁盤空間 - 如果你的服務器資源有限,可能值得減少一點。 – Chii
@Chii:我完全不理解連接。永遠不會映射到駐留頁的虛擬內存不會佔用磁盤空間。 –
@Chii不,真的,虛擬內存只是數字。有很多數字。服務器可能對其他資源有限制,但它可以擁有儘可能多的數字。 –
你是如何測量這些數字的?
在Linux上比較Windows任務管理器和ps(1)的數量是徒勞的,因爲它們的計算方式不同。例如,共享庫和共享內存在兩個平臺上的屬性都不相同。內存管理也完全不同。
另一方面,如果您指的是通過Runtime
(或類似)從您的應用程序中收集的數字,那麼您必須查看JVM是如何以什麼參數啓動的。最重要的是參數-Xmx
和-Xms
,但您可以在java
或javaw
的文檔中查找其他幾個人。
點1相關:
How to measure actual memory usage of an application or process?
除非你明確地設置(例如命令行參數,像-Xmx128m)時,JVM depends on the amount of RAM available的默認最大堆大小。
- 1. Linux服務器用完java內存
- 2. 爲什麼客戶端使用更多內存與不同的服務器?
- 3. RethinkDB:爲什麼rethinkdb服務使用這麼多內存?
- 4. 爲什麼Java Enums使用比接口更多的內存?
- 5. 爲什麼使用更多的內存比我分配
- 6. 在Linux服務器上認爲CPU使用率有多高
- 7. 適用於Java的內存SFTP服務器有什麼優點?
- 8. 爲什麼我的腳本在使用mod_perl運行時使用更多內存?
- 9. 在Linux上使用太多內存的Java?
- 10. 在Linux服務器上使用DNS
- 11. 爲什麼node.js服務器不能在我的子域上工作(在WHM服務器上使用cloudflare)?
- 12. 爲什麼我不能多次使用我的web服務?
- 13. 爲什麼引用使用更多的內存?
- 14. JBOSS服務器日誌在服務器中佔用更多內存
- 15. 爲什麼不工作在服務器上的setcookie?[更新]
- 16. 在Linux上使用SOAP的Web服務服務器
- 17. 爲什麼服務器上的專用內存減少到一個進程?
- 18. 我可以在Xcode的Linux服務器上使用SVN嗎?
- 19. 爲什麼Java不斷地吃更多的內存?
- 20. Java:在遠程Linux服務器上監聽目錄更改
- 21. 在Linux服務器上運行java(javaserver頁面)會有什麼好的實現?
- 22. 爲什麼Rails在我的生產服務器上查找SQLite3?
- 23. 爲什麼wamp服務器正在我的電腦上運行?
- 24. 爲什麼我需要在java中導入服務器證書
- 25. 爲什麼uWSGI使用比Apache更多的內存?
- 26. 在多臺服務器上對文件使用Linux命令
- 27. 爲什麼瀏覽器使用這麼多內存?
- 28. 使用Django,爲什麼REMOTE_ADDR在Web服務器上返回127.0.0.1?
- 29. 爲什麼在本地服務器上使用OPENQUERY不好?
- 30. 在Linux服務器上保存完整網頁的最佳方法是什麼?
你說的是物理內存還是虛擬內存?如果虛擬內存 - 誰在乎?虛擬內存不是稀缺資源。 –
您是否嘗試了內存轉儲?你可以使用 - http://java.sun.com/developer/technicalArticles/Programming/HPROF.html – Pushkar
看到你的內存利用率你確定它只用了9MB的總量,我覺得很難相信嗎?在具有更多內存的機器上,最大內存會增加。這意味着使用更多的虛擬內存,但不是更多的常駐內存。 (這是你應該看的數字) –