2010-05-17 85 views
4

对于Jetty,Tomcat或您选择的任何其他servlet容器,基本servlet的平均占用空间(内存和任何其他显着资源)是多少?这包括每个servlet几乎总是需要的其他基本对象,例如视图解析器。什么是Java EE servlet的(内存)占用空间?

我并不是在寻找一个定量的数字,而是任何指示性的答案,可以给出一个servlet如何“重”或“轻量级”的想法。

+1

我喜欢定量数字,但找不到任何地方。如果您需要为每个容器实例运行一个客户端应用程序,那么知道@您将在jvm + container *实例数量之外(即,在启动之前)使用多少内存会很好。由此你可以决定,好的,Tomcat每个实例消耗的内存太多;我会和Jetty,Winstone等一起去 – virtualeyes 2011-03-15 02:50:16

回答

4

我不认为这是从堆栈溢出问题获得很多好处。 “基本”定义以及不同版本的servlet软件的变化将远远大于您自己测试所需的工作量。

只需创建一个没有字段的“hello-world”类型的servlet,使用此WAR启动您选择的servlet容器并测量内存使用情况。这将广泛地为您提供servlet容器的开销,在查看目标servlet的“重量级”时,您可以从实际内存测量中减去这些开销。

如果您在实际系统上使用实际目标版本的servlet容器生成自己,那么这些数字会比在此处回答“47MB”或类似内容的人更有用。

+2

+1,不过我可能会添加一些相同的servlet,以获得更具统计意义的数字。即使如此,我还是会想象,与每个servlet相关的开销与vm和servlet容器库,本地套接字库等的开销相比可以忽略不计。 – mdma 2010-05-17 17:24:14

+0

我的期望非常好。但是,因为Amr大概不相信,如果他自己测量,他会更强烈地采取这种方式;人们告诉他听起来“不可信”的东西不会有同样的影响。 – 2010-05-18 08:03:59

0

容器的大小是非常不相关的(Tomcat或Jetty,不是Websphere或类似的东西),除非你在做嵌入式编程。 Servlet的大小可以根据需要尽可能小,也可以根据需要调整。一般来说,无状态Web应用程序每个线程的开销比有状态开销少。