2014-03-14 65 views
0

我可以在我的應用程序中看到沒有加載的類繼續增加as discussed here反射類不斷增加

使用yourkit和幫助從堆棧溢出社區,我能夠得出這樣的結論得到提高班是因爲反射類得到動態創建,列出如下:

  1. GeneratedConstructorAccessorXX
  2. GeneratedMethodAccessorXX
  3. 生成的序列化構造器訪問器XXX

    其中XX是某個數字。

按我的知識,我都來googling之後才知道,這是一種使用反射來訪問存儲在該memory.These存取對象信息運行時代理的緩存,使他們沒有每次都要重新生成。這些類對象對於每個類加載器都是單例,因此每個給定類的類加載器只有一個生成的訪問器實例。 如果是這種情況,爲什麼我在運行重複測試時會看到已加載類的增加。

更新* 在進一步的分析我觀察到,增加的負載是特異性因爲 GeneratedSerializationConstructorAccessor。

回答

0

我會在下面分享我的發現,並接受這個答案作爲答案,除非其他人有更好的東西。 在進一步分析和檢查使用您的工具包的堆棧跟蹤時,我發現在任何EJb bean調用正在創建時,GeneneratedSerializationConstructorAccessor都已創建。儘管並不是每一個請求都會創建新的類。 發現的另一個觀察結果是,另一個使用EJB bean的應用程序也部署在同一個jboss服務器上,並且是測試的一部分,但我們並未遇到任何此類問題。

我可以看到的一個區別是,沒有發現此類問題的後來的應用程序使用EJB 3.X,發現問題的地方是2.X. 可能是創建問題的遺留版本。 它已被確定不是一個表演塞,它的表現將在生產中觀看。