在我們的Tomcat應用程序中,出現「OutOfMemoryError:超出GC開銷限制」。 但Runtime.getRuntime().freeMemory()
報告576 MB是免費的。OutOfMemoryError(超出GC開銷限制)但仍有大量可用空間
這是怎麼發生的?
該錯誤是從SQL Server JDBC驅動程序中拋出的,我無法想象這會嘗試在一個內存請求中分配數百兆字節。 而在錯誤發生前的幾分鐘內,「PS Scavenge」和「PS MarkSweep」的計數並沒有增加太多。
Runtime.getRuntime().maxMemory()
以及Runtime.getRuntime().totalMemory()
報告4.5 GB。這與64位Sun JVM for Java 7一起運行。
stacktrace請 –
請粘貼整個堆棧跟蹤 - 由於堆耗盡或燙髮導致內存不足。或其他東西... – Scorpion
這個答案可能會有所幫助:http://stackoverflow.com/a/1393503 - 它解釋了這個特定的意義OutOfMemoryError – konradstrack