Exception in thread "http-apr-8080-exec-3"
java.lang.OutOfMemoryError: Direct buffer memory
at java.nio.Bits.reserveMemory(Unknown Source)
at java.nio.DirectByteBuffer.(Unknown Source)
at java.nio.ByteBuffer.allocateDirect(Unknown Source)
at org.apache.coyote.http11.InternalAprInputBuffer.(InternalAprInputBuffer.java:64)
at org.apache.coyote.http11.Http11AprProcessor.(Http11AprProcessor.java:66)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.createProcessor(Http11AprProtocol.java:320)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.createProcessor(Http11AprProtocol.java:217)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:619)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2381)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2370)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
此问题我已经自行解决,虽然你们都没给出什么可以解决的办法,但是还是要谢谢你们!
内存溢出的原因是好多,这里不是清除你是什么造成的,我试过最有效的一种就是先把项目导出来,然后在开发环境中删除之前的,
记住一定要在它实际存放的文件在本地也删除,然后在导入你的之前拷贝的文件就可以了。
检查下代码中是不是用到了ByteBuffer类的allocateDirect方法,这样的ByteBuffer的内存直接是操作系统的内存,不会被GC回收,所以很容易导致内存溢出的。
所以如果使用到了ByteBuffer类需要谨慎。
导致此问题的原因是:JVM各个内存区域的总和设置过大,在导致其直接内存( Direct Memory)动态扩展时,内存不够就会提示此OOM
解决方法一:根据本机物理内存大小,实际设置JVM的各区域大小,不要过大。
解决方法二:直接指定:-XX:MaxDirectMemorySize的大小