2012-08-09 72 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。