2011-08-17 46 views
1

我使用的WebLogic 9.2,JDK1.5,和Oracle 10g我的應用程序,並得到了一些內存問題的WebLogic,JDK1.5內存

我有一個報告servlet的4種不同的分貝數以百萬計的報告發布記錄

現在我的問題是這樣的,當我在一個時間(單用戶)運行報告之一,沒有出現內存問題說

報表時正在執行內存爲775 MB 當報告完成執行內存爲836 mb

現在

越早併發用戶請求報告的內存泄漏甚至每個報告只有很少的內存回收結束後說

報告時正在執行內存爲33 MB 報告時開始

完成執行內存爲86 MB

它停留在86MB永遠,直到下一個請求得到java.lang.OutOfMemoryError

我個人有T之後調用的System.gc他每個報告執行的結束,但只下到一個86MB

〜我實例化servlet的POST方法中的報告對象爲每個請求

+0

很少需要System.gc。它不會做任何GC不會自己做的事情。你最大的堆大小是多少?它將在傳遞給JVM的'-Xmx ____ M'標誌中。您是否在使用Entity Beans進行查詢? – Jonathan

回答

0

什麼是你堆設置與XMX和X毫秒

看起來您在運行位於Eden空間(位於Young空間內)的報告時會創建大量臨時對象。這些可以通過相對於Xmx改變Xms的值來進行調整。

也許當併發用戶打你的應用程序正在資源爭奪底層數據庫或其他任何。

我建議你用VisualVM或YourKit分析你的應用程序。也讀Troubleshooting Memory Leaks