我正在使用JMagick并有一个简单的 Java 类,它遍历目录(及其子目录)中的所有图像,将图像转换为灰度图像。
在我的应用程序运行一段时间后,JVM 崩溃了。我相信日志中的错误消息可能表明存在内存问题:
Java 帧:(J=编译的 Java 代码,j=解释的,Vv=VM 代码)j magick.MagickImage.writeImage(Lmagick/ImageInfo;)Z+0 j com.example.ImageGenerator.generateAlternativeImages(Ljava/io/File;Z )V+91 j com.example.ImageGenerator.main([Ljava/lang/String;)V+58 v ~StubRoutines::call_stub
- - - - - - - - 过程 - - - - - - - -
Java线程:(=>当前线程)0x0ab0c800 JavaThread“低内存检测器”守护进程[_thread_blocked,id = 1532,堆栈(0x0aec0000,0x0af10000)] 0x0ab0ac00 JavaThread“CompilerThread0”守护进程[_thread_blocked,id = 7304,堆栈(0x0ae70000,0x0aec) ] 0x0aafe000 JavaThread “JDWP 命令读取器”守护进程 [_thread_in_native, id=6836, stack(0x0ae20000,0x0ae70000)] 0x0aafc800 JavaThread “JDWP 事件帮助线程”守护进程 [_thread_blocked, id=7248, stack(0x0add0000,0x0ae20000 JavaThread)]传输侦听器:dt_socket”守护进程 [_thread_blocked, id=6252, stack(0x0ad80000,0x0add0000)] 0x0aaee800 JavaThread "附加侦听器"守护进程 [_thread_blocked, id=2020, stack(0x0aca0000,0x0acf0000)] 0x0aaed400 JavaThread "Signal Dispatcher"守护进程 [_thread_blocked, id=7492, stack(0x0ac50000,0x0aca0000)] 0x0aada400 JavaThread "Finalizer" 守护进程 [_thread_blocked, id=5400, stack(0x0ac00000,0x0ac50000)]
0x0aad8c00 JavaThread“引用处理程序”守护进程 [_thread_blocked, id=5772, stack(0x0abb0000,0x0ac00000)] =>0x002b8000 JavaThread“main” [_thread_in_native, id=7020, stack(0x008c0000,0x00910000)]其他线程:0x0aad5400 VMThread [堆栈:0x0ab60000,0x0abb0000] [id=7720] 0x0ab0f000 WatcherThread [堆栈:0x0af10000,0x0af60000] [id=6432]
VM 状态:不在安全点(正常执行)
VM Mutex/Monitor 当前由一个线程拥有:无
HEAP DEF新一代总计960K,使用了793K [0x029C0000,0x02AC0000,0x02EA0000)Eden Space 896K,88%使用[0x029c0000,0x02a865f0,0x02aa0000),从空间64K,0%到0%至0%至0500 0002a000000000000)0x02aaaaaaaaaaaa使用[0x02ab0000,0x02ab0000,0x02ac0000)年老代总4096K,使用0K [0x02ea0000,0x032a0000,0x069c0000)4096K,使用0%的空间[0x02ea0000,0x02ea0000,0x02ea0200,0x032a0000)压制烫发根总12288K,用于2219K [0x069c0000,0x075c0000 , 0x0a9c0000) 空间 12288K, 18% 已使用 [0x069c0000, 0x06bead18, 0x06beae00, 0x075c0000) 未配置共享空间。
我尝试添加 -Xmx 选项,但认为这可能不是解决方案。有什么建议么?
提前致谢。