Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确定终结器队列中对象的创建者_Java - Fatal编程技术网

Java 如何确定终结器队列中对象的创建者

Java 如何确定终结器队列中对象的创建者,java,Java,最近我经常遇到CPU达到100%的情况,所以我检查了CPU的情况: 内存似乎已满,所以我转储了heap,并尝试使用MAT分析它 我第一次注意到终结器的内存非常不正常,使用了超过2G的内存 相比之下,正常情况下约为500MB。 我最初认为这是因为终结器线程被阻塞,但似乎意味着这不是问题的根源 “终结器”#3守护进程优先级=8 os_优先级=0 tid=0x00007f83c008c000 nid=0x1c190等待监视器条目[0x00007f83a1bba000] java.lang.Thr

最近我经常遇到CPU达到100%的情况,所以我检查了CPU的情况:

内存似乎已满,所以我转储了heap,并尝试使用MAT分析它

我第一次注意到终结器的内存非常不正常,使用了超过2G的内存

相比之下,正常情况下约为500MB。 我最初认为这是因为终结器线程被阻塞,但似乎意味着这不是问题的根源


“终结器”#3守护进程优先级=8 os_优先级=0 tid=0x00007f83c008c000 nid=0x1c190等待监视器条目[0x00007f83a1bba000]
java.lang.Thread.State:阻塞(在对象监视器上)
位于java.util.zip.Deflater.deflateBytes(本机方法)
位于java.util.zip.Deflater.deflate(Deflater.java:444)
-锁定(一个java.util.zip.ZStreamRef)
位于java.util.zip.Deflater.deflate(Deflater.java:366)
位于java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.java:251)
位于java.util.zip.DeflaterOutputStream.write(DeflaterOutputStream.java:211)
位于java.util.zip.GZIPOutputStream.write(GZIPOutputStream.java:145)
-锁定(java.util.zip.GZIPOutputStream)
位于org.apache.coyote.http11.filters.GzipOutputFilter.doWrite(GzipOutputFilter.java:72)
位于org.apache.coyote.http11.Http11OutputBuffer.doWrite(Http11OutputBuffer.java:199)
位于org.apache.coyote.Response.doWrite(Response.java:538)
位于org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:328)
位于org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:748)
位于org.apache.catalina.connector.OutputBuffer.realWriteChars(OutputBuffer.java:433)
位于org.apache.catalina.connector.OutputBuffer.flushCharBuffer(OutputBuffer.java:753)
位于org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:284)
位于org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:261)
位于org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:118)
在javax.imageio.stream..close(FileCacheImageOutputStream.java:238)
在javax.imageio.stream.imageFileCacheImageOutputStreamInputImpl.finalize(ImageInputStreamImpl.java:874)中
位于java.lang.System$2.invokeFinalize(System.java:1270)
位于java.lang.ref.Finalizer.runFinalizer(Finalizer.java:98)
位于java.lang.ref.Finalizer.access$100(Finalizer.java:34)
位于java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:210)
一直以来,我想我找到了占用内存的对象: 因此,似乎URLJarFile创建了许多未使用的缓冲区,但我不知道在我到达这里之后如何继续找到问题的根源。也许我需要监视这里的堆栈调用

Add:我想我找到了一些有用的信息,其中大部分都是用jstl-1.2.jar加载的