【问题标题】:What's the (memory) footprint of a Java EE servlet?Java EE servlet 的(内存)占用量是多少?
【发布时间】:2011-02-20 12:08:07
【问题描述】:

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

我并不是在寻找具体的量化数字,而是任何可以说明 servlet 有多“重”或“轻量级”的指示性答案。

【问题讨论】:

  • 我想要一个定量的数字,但在任何地方都找不到。如果您需要为每个容器实例运行一个客户端应用程序,那么很高兴知道@您将使用 jvm + 容器 * 实例数开箱即用(即在启动之前)消耗多少内存。有了它,您可以决定,好的,Tomcat 每个实例消耗太多内存;我会和 Jetty、Winstone 等一起去。

标签: java servlets jakarta-ee footprint


【解决方案1】:

我认为在 Stack Overflow 上提问不会让您从中受益匪浅。 “基本”定义的可变性以及不同版本的 servlet 软件,将远远大于您自己测试所需的工作量。

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

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

【讨论】:

  • +1,虽然我可能会添加许多相同的 servlet,只是为了获得更具统计意义的数字。即便如此,我认为与 vm 和 servlet 容器库、本机套接字库等的开销相比,与每个 servlet 相关的开销可以忽略不计。
  • 我也很期待。但既然阿姆尔大概不这么认为,如果他自己衡量的话,他会更强烈地接受它。人们告诉他一些听起来“难以置信”的事情不会产生同样的影响。
【解决方案2】:

除非您在进行嵌入式编程,否则容器大小是无关紧要的(Tomcat 或 Jetty,而不是 Websphere 或类似的东西)。 Servlet 的大小可以根据您的需要小,也可以根据需要大。一般来说,无状态 Web 应用程序的每线程开销比有状态应用程序要少。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2010-11-25
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多