2012-08-09 75 views
1

我正在開發一個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應用程序。

+3

對象堆動態增長和縮小爲[垃圾收集器不工作](http://www.javaworld.com/javaworld/jw-08-1996/jw-08-gc.html)。 :-) – oldrinb 2012-08-09 21:36:30

+1

控制最小和最大堆大小是[在這篇文章中描述](http://stackoverflow.com/questions/1098488/jvm-heap-parameters)。默認情況下,我相信這個堆將會繼續增長,並且GC將最終開始恢復合格的對象。如果您的應用程序存在內存泄漏,您最終將根據您設置的服務器的限制獲取「OutOfMemory」異常 – Brad 2012-08-09 21:41:45

回答

3

除RAM內存大小外,JVM大小是否有限制?

是的,限制set by you

-Xmx爲最大堆尺寸和-Xms爲初始堆尺寸

的JVM運行幾乎。如果你分配的內存比你機器上的可用內存多,它將被換出。

正在運行的Tomcat 7服務器應用程序的大小是多少?

你自己沒有回答過這個問題嗎?這是你記憶力的52%。一般來說,您也可以使用specify for your Tomcat the memory max. and min. size。畢竟它只是另一個JVM。