我正在开发一个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