我們對我們的應用程序使用WebSphere應用程序服務器,並且經常發生內存不足錯誤。爲了調試這個,我們添加了日誌來檢查在某些地方使用過的內存,下面是觀察結果。WebSphere內存不足錯誤
使用的內存不會減少,直到達到閾值限制。我們使用下面的內存配置:
InitialHeapSize="1024" maximumHeapSize="2048"
因此,直到它跨越1024內存不釋放。在OOM錯誤的情況下,即使某些線程未被使用,內存也不會被釋放。
我認爲堆大小沒有被釋放。但是,Java運行時API顯示有可用內存。像方法類,字符串操作這樣的Java操作正在工作,但是當JNDI查找出現內存異常時,它的失敗。結果,由於連接不可用,系統失敗。
堆棧跟蹤:
com.ibm.websphere.naming.CannotInstantiateObjectException:當JNDI NamingManager正在處理一個javax.naming.Reference中對象時發生異常。 [根異常是java.lang.OutOfMemoryError] at com.ibm.ws.naming.util.Helpers.processSerializedObjectForLookupExt(Helpers.java:1033) at com.ibm.ws.naming.util.Helpers.processSerializedObjectForLookup(Helpers。 java:730)
[java.lang.OutOfMemoryError:Java堆空間]的可能重複(http://stackoverflow.com/questions/1596009/java-lang-outofmemoryerror-java-heap-space) –