gpt4 book ai didi

java - 如何调查过度的java垃圾收集

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:21 28 4
gpt4 key购买 nike

我有一个表现出以下行为的 Tomcat 实例:

  • 接受单个 http 传入请求。
  • 向后端服务器发出一个请求并返回大约 400kb 的 XML。
  • 传递此 XML 并将其转换为大约 400kb 的 JSON。
  • 返回 JSON 响应。

问题是在处理 400k 请求的过程中,我的 webapp 生成了大约 100mb 的垃圾,这些垃圾填满了 Eden 空间并触发了新生代收集。

我曾尝试使用内置的 java hprof 功能来进行分配站点分析,但 Tomcat 似乎无法正确启动。可能是我有点不耐烦,因为我认为内存分配分析的开销很高,因此 tomcat 启动可能需要很长时间

用于对非常年轻的对象/垃圾进行 Java 内存分析的最佳工具是什么?我不能使用堆转储,因为我感兴趣的对象是垃圾。

最佳答案

至于实际问题:当使用基于 DOM 的解析器时,XML 解析可能会非常占用内存。考虑使用 SAXbinary XML基于解析器(VTD-XML 是基于它的 Java API)。

实际上,如果 XML->JSON 的映射是纯 1:1,那么你也可以考虑只读取 XML 并使用一个小堆栈逐行实时写入 JSON。


回到问题:我建议使用VisualVM为了这。你可以找到here一篇博客文章如何让它与 Tomcat 一起工作。

关于java - 如何调查过度的java垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3171133/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com