2012-01-02 78 views
2

我的一個任務是吃了太多的內存和OutOfMemoryError而未能例外。我能捕捉到這個異常嗎?當我內存不足時可以收到警告嗎?與OutOfMemory異常AppEngine上處理

+0

我還沒有尋找到他們的個人;但您可能想要查看後端實例。他們可以訪問比默認前端更多的內存。這當然假設您沒有可以實施的一些明顯的改變來節省內存。 http://code.google.com/appengine/docs/java/backends/overview.html – Dave 2012-01-02 16:38:26

+0

的可能的複製[捕java.lang.OutOfMemoryError?](http://stackoverflow.com/questions/2679330/catching-java -lang-outofmemoryerror) – Raedwald 2015-11-20 09:30:05

回答

2

可以趕上的OutOfMemoryError。但是,它不推薦。

還有一堆的原因出現錯誤,其中最明顯的是http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/OutOfMemoryError.html。你也有像的GC時間98%的原因是減少堆等

至於通話的OutOfMemoryError之前回來的不到2%的花費,沒有這樣的事情。

+0

我只想抓住它,以便我可以記錄它並告訴AppEngine放棄。 AppEngine會重新啓動任何因任何原因而失敗的任務,因此當任務拋出OutOfMemoryError時,它只會重新啓動,再次耗盡內存,並最終花費大量資金。你認爲這屬於例外情況的「推薦」情況嗎? – 2012-01-02 16:38:34

+0

哦,那麼你可以做到這一點。就像我說的,你一定可以抓住它。繼續並添加一個catch(OutOfMemoryError e)。如果還有其他可能會讓你花費的東西,你甚至可以捕獲Throwable。但是,請記住,一旦你捕捉到它,如果你不停止你的應用程序引擎,控制就會繼續,因爲它就像其他任何異常捕獲一樣。 – Pavan 2012-01-02 16:40:41