我有一個Java應用程序,併產生大量的線程..並由於內存不足錯誤..如果它死亡運行時間太多..是否有一個jvm配置參數,我可以設置它以便在沒有可用內存時等待內存,而不是拋出內存不足錯誤。Java應用程序:請求在內存溢出的情況下等待
回答
我真的不認爲這是可行的設置爲jvm參數。您應該將-Xmx和-Xms設置爲JVM的適當值。之後,在您的代碼中,您可以使用Runtime.freeMemory檢查堆上當前的可用內存。如果可用內存太低,則可能會使線程處於睡眠狀態,直到您擁有足夠的內存來處理內存。
另外,查看java.lang.management包的文檔,特別是MemoryMXBean。它使您可以訪問比運行時更詳細的信息。 – 2010-08-09 19:13:30
備份一下。如果您的應用程序創建的線程太多以致於JVM內存不足,那麼您確實需要重構以使用某種線程池機制。你可以捕捉到內存不足的異常,看看是否有線程釋放了資源,然後返回而沒有處理它,但這對我來說是一個不好的代碼。
OutOfMemoryError被認爲是不可恢復的錯誤狀況。如果你抓住它,你可能無法做任何事情。由於它可以從代碼中的任何地方拋出,捕獲它可能不可能。參見:http://stackoverflow.com/questions/1692230/is-it-possible-to-catch-out-of-memory-exception-in-java – 2010-08-09 19:01:30
- 1. 如何在不等待Ruby中的響應的情況下發出HTTP請求
- 2. 如何在不等待響應的情況下從XMLHTTP發送請求?
- 3. VS消息:在未啓用ASP.NET調試的情況下等待請求
- 4. Java Web WebLogic Server上的應用程序內存使用情況
- 5. 關於Java應用程序的內存使用情況
- 6. 如何在不分配內存的情況下測量.net應用程序的內存使用情況?
- 7. 如何在不等待退出的情況下運行外部程序?
- 8. 如何在提出下一個請求之前等待響應?
- 9. ScrollDown在溢出情況下的ContextMenu
- 10. GridX在不發出新請求的情況下清除排序
- 11. Java在我的情況下等待或睡眠
- 12. 如何在不拋出TaskCanceledExceptions的情況下等待任務?
- 13. 如何在不等待輸出的情況下繼續CompletableFuture
- 14. 在java中等待異步http請求
- 15. django在外鍵的情況下請求
- 16. Java api獲取我的java應用程序的CPU和內存使用情況
- 17. 如何在不進行輪詢的情況下等待線程?
- 18. 參數1傳遞必須應用\請求的情況下,給予照亮\ HTTP \請求的情況下
- 19. Android正在運行的應用程序內存使用情況
- 20. Java內存使用情況
- 21. java內存使用情況
- 22. 在沒有Java的情況下創建Android應用程序
- 23. 在Java應用程序中分析內存使用情況的最佳方法?
- 24. 什麼情況下會等待取消的任務拋出TaskCanceledException?
- 25. 如何在這種情況下實現線程等待通知?
- 26. 在heroku上跟蹤應用程序內存使用情況
- 27. 如何在不等待C++響應的情況下啓動線程?
- 28. MySQL內存溢出java堆溢出
- 29. 獲取應用程序的內存使用情況的錯誤
- 30. Android中的應用程序的內存(CPU)使用情況
我認爲你需要做的是看一個適當大小的Executors.newFixedThreadPool,並根據它們估計的內存消耗來限制你的線程。 – Yishai 2010-08-09 17:58:00