2012-01-02 51 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