我正在開發一個java web應用程序,並在Tomcat 7服務器上運行它。 我通過調用檢查存儲器的大小:Tomcat JVM的大小是可變的嗎?
System.out.println("Total memory is: " + Runtime.getRuntime().totalMemory());
我所注意到的是,大小是變化的,當我的數據的大小變大的Runtime.getRuntime().totalMemory()
得到較大爲好。
1- JVM是否嘗試大於應用程序數據的大小?
2-除RAM內存大小外,JVM大小是否有限制?
3-第三個問題與上述兩者不太相關:正在運行的Tomcat 7服務器應用程序的大小是多少?實際上,我的服務器上有一個小內存(亞馬遜雲服務器,免費輪胎,600 MB內存),而且我注意到JAVA在不部署任何Web應用程序的情況下佔用了大約52%的內存。
對不起我的基本問題,我不熟悉Web服務器和Web應用程序。
對象堆動態增長和縮小爲[垃圾收集器不工作](http://www.javaworld.com/javaworld/jw-08-1996/jw-08-gc.html)。 :-) – oldrinb 2012-08-09 21:36:30
控制最小和最大堆大小是[在這篇文章中描述](http://stackoverflow.com/questions/1098488/jvm-heap-parameters)。默認情況下,我相信這個堆將會繼續增長,並且GC將最終開始恢復合格的對象。如果您的應用程序存在內存泄漏,您最終將根據您設置的服務器的限制獲取「OutOfMemory」異常 – Brad 2012-08-09 21:41:45