【问题标题】:How many objects my server creates per request我的服务器每个请求创建多少个对象
【发布时间】:2014-07-31 06:13:00
【问题描述】:

为了满足我的 http 服务器的 SLA,我需要管理花费在 GC 上的时间。所以,我需要最小化每个请求的新对象。

一开始,我只想测量每个请求的新对象数量。我试图通过堆转储差异来做到这一点,但这显示了很多冗余数据。我觉得,我不仅捕获了根据请求创建的对象。

是否有任何简单的方法可以查看平均每个请求创建的对象?

【问题讨论】:

  • stackoverflow.com/questions/2262620/… 在堆中计数对象的选项很少。您可以检查并确定其范围以请求。
  • 我在那个问题中找到了 jvisualvm。看起来我可以使用“采样器”。感谢您的链接。

标签: java performance garbage-collection


【解决方案1】:

最后我使用了 jvisualvm。

加载您的服务器,运行数千个预热请求。打开“监视器”选项卡,按“执行 GC”。然后打开探查器选项卡,将其配置为保存分配堆栈跟踪并运行。在服务器上运行繁重的负载。等待 100-200K 请求并推送“快照”。

使用堆栈跟踪享受详细的分配对象日志!

【讨论】:

    【解决方案2】:

    如果容器是 WebSphere,当您使用 -XrunpmiJvmpiProfiler 选项时,有一个选项 ObjectAllocateCount 就像提到的 here 一样。不过我没试过。

    【讨论】:

    • 不,它不是 WebSphere。这是一些手工制作的服务器。
    猜你喜欢
    • 2012-12-27
    • 2023-04-10
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2014-08-01
    相关资源
    最近更新 更多