我對分析應用程序以提高性能有點新。我選擇了YourKit作爲我的分析器。毫無疑問,YourKit提供了非常有趣的統計數據。我陷入困境的是如何處理這些統計數據。分析Java EE應用程序 - 尋找什麼以及做出哪些更改?
例如,考慮一種在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%!
這取決於你的性能目標是什麼(響應時間?吞吐量?CPU使用?內存使用?) – meriton
我主要關心吞吐量和響應時間。我們有充足的內存和一個非常強大的處理器! – CKing