gpt4 book ai didi

java - 分析 Java EE 应用程序 - 需要寻找什么以及要进行哪些更改?

转载 作者:行者123 更新时间:2023-11-30 09:32:58 25 4
gpt4 key购买 nike

我对分析应用程序以提高性能有点陌生。我选择 YourKit 作为我的分析器。毫无疑问,YourKit 提供了非常有趣的统计数据。我遇到困难的地方是如何处理这些统计数据。

例如,考虑一个在 JAXB POJO 上运行的方法。该方法遍历 POJO 以访问深深嵌套在 XML 中的标记/元素。这需要 4 层 for 循环才能到达元素/标签,如下所示:

   List<Bundle> bundles = null;
List<Item> items = null;
for(Info info : data) {
bundles = info.getBundles();
for(Bundle bundle : bundles) {
items = bundle.getItems();
//.. more loops like this till we get to the required element
}
}

YourKit 告诉我上面的代码是一个“热点”,每次调用包含此代码的方法时,都会收集 80 个对象的垃圾。上面的代码只是一个例子,并不是我卡住的唯一部分。大多数时候我不知道如何处理分析器提供的信息。我可以做些什么来减少上面代码中临时对象的数量?是否有明确定义的原则来提高应用程序的性能?分析应用程序时要查找哪些统计数据以及每种统计数据有什么含义?

编辑:分析应用程序的主要目标是增加吞吐量和响应时间。当前吞吐量仅为所需吞吐量的 10%!

最佳答案

关注与您的绩效目标相关的统计数据。您对最小响应时间感兴趣,因此查看每个方法对响应时间的贡献有多大,并关注那些贡献多的方法(对于单线程处理,这只是方法调用期间耗时,该方法的所有调用的总和)。我不确定 YourKit 将什么定义为热点(查看文档),但它可能是累积运行时间最高的方法,因此热点是值得关注的。相比之下,对象分配对响应时间没有直接影响,并且与您的情况无关(除非您已经确定垃圾收集器贡献了很大一部分 cpu 时间,但通常不会)。

关于java - 分析 Java EE 应用程序 - 需要寻找什么以及要进行哪些更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12404617/

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