Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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
使用javax.media.jai进行图像转换时JVM崩溃_Java_Jakarta Ee_Jai_Jvm Crash - Fatal编程技术网

使用javax.media.jai进行图像转换时JVM崩溃

使用javax.media.jai进行图像转换时JVM崩溃,java,jakarta-ee,jai,jvm-crash,Java,Jakarta Ee,Jai,Jvm Crash,在我们的应用程序中,我们使用javax.media.JAI库来扩展和改进图像 但有时(10次中有1次),它会导致VM崩溃 # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007fdb6f49140b, pid=2153, tid=140580255180544 # # JRE version: 6.0_22-b22 # Java VM: OpenJ

在我们的应用程序中,我们使用javax.media.JAI库来扩展和改进图像

但有时(10次中有1次),它会导致VM崩溃


#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fdb6f49140b, pid=2153, tid=140580255180544
#
# JRE version: 6.0_22-b22
# Java VM: OpenJDK 64-Bit Server VM (20.0-b11 mixed mode linux-amd64 compressed oops)
# Derivative: IcedTea6 1.10.4
# Distribution: Fedora release 16 (Verne), package fedora-61.1.10.4.fc16-x86_64
# Problematic frame:
# C  [libgs.so+0x16940b]  s_DCT_set_defaults+0x8b
#
# An error report file with more information is saved as:
# /usr/share/tomcat/hs_err_pid2153.log
#
# If you would like to submit a bug report, please include
# instructions how to reproduce the bug and visit:
#   http://icedtea.classpath.org/bugzilla
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
向代码中添加日志确实有助于确定确切的行


                DebugHelper.errorLog("Start transformImage2");
        List modImages = new ArrayList();
        PageImage page = new PageImage();

        // generate rendered image.
        RenderedOp im = JAI.create("fileload", image.getFile()
                .getAbsolutePath());

        // get the width and height of original image.
        float width = im.getWidth();
        float height = im.getHeight();

        // improve the quality of image.
        DebugHelper.errorLog("Improving quality of image");
        RenderingHints qualityHints = new RenderingHints(
                RenderingHints.KEY_RENDERING,
                RenderingHints.VALUE_RENDER_QUALITY);
        qualityHints.put(RenderingHints.KEY_ANTIALIASING,
“启动transformImage2”可以打印,但“提高图像质量”不能打印。所以我们知道它在3-4行中。另外,从hs_err*文件中,它指向float width=im.getWidth()

所以我有几个问题

  • 问题的确切原因是什么

  • 为什么错误不会一直发生,同一个映像有时会成功转换,而其他映像则会失败

  • 如何解决(当然:)


  • 我认为您需要设置堆大小

    提及

    我认为您需要设置堆大小

    提及

    我建议检查一下


    相对较旧,有连续的JRE 6版本,当然还有Java7。我怀疑更高版本是缓解此问题的简单方法。

    我建议检查


    相对较旧,有连续的JRE 6版本,当然还有Java7。我怀疑更高版本是缓解此问题的简单方法。

    好吧,我觉得向您解释如何解决问题很傻, 但我要做的是:

  • 停止在代码中查找错误,它不在那里
  • 找出你的程序在哪一行崩溃。 开始禁用线路,看看它是否仍然崩溃
  • 升级涉及的组件。首先是ghostview库,然后是jdk,然后是操作系统
  • 开始切换组件。我一直在开源jdk上遇到麻烦, 也许可以试着换一种甲骨文专用的。然后尝试不同的操作系统
    好吧,我觉得向你解释如何解决问题很傻, 但我要做的是:

  • 停止在代码中查找错误,它不在那里
  • 找出你的程序在哪一行崩溃。 开始禁用线路,看看它是否仍然崩溃
  • 升级涉及的组件。首先是ghostview库,然后是jdk,然后是操作系统
  • 开始切换组件。我一直在开源jdk上遇到麻烦, 也许可以试着换一种甲骨文专用的。然后尝试不同的操作系统
    您是否正在尝试读取损坏的图像?另外:你必须使用JAI吗?为什么不直接使用ImageIO?@kritzikratzi,在重启服务器后成功上传了相同的图像,所以我确信这不是因为图像。我可以去一个新的图书馆,但我需要证明它的客户(找出确切的问题,并确保没有修复可用)。不幸的是,我在互联网上找不到任何关于类似错误的详细信息。你永远也找不到确切的问题。jdk是一个大屁股的东西,你也在使用一个奇怪的东西。。。这里有很多空间可以容纳像这样的奇怪的bug:)你可能正在尝试读取一个损坏的图像吗?另外:你必须使用JAI吗?为什么不直接使用ImageIO?@kritzikratzi,在重启服务器后成功上传了相同的图像,所以我确信这不是因为图像。我可以去一个新的图书馆,但我需要证明它的客户(找出确切的问题,并确保没有修复可用)。不幸的是,我在互联网上找不到任何关于类似错误的详细信息。你永远也找不到确切的问题。jdk是一个大屁股的东西,你也在使用一个奇怪的东西。。。这样的奇怪错误还有很多空间:)我通常不会期望内存问题以JVM崩溃的形式出现——而不是OutOfMemoryError我通常不会期望内存问题以JVM崩溃的形式出现——而是OutOfMemoryError感谢Brian的回复。迁移到新的JRE看起来是一个不错的选择,但我需要首先找出确切的问题,以确保迁移到新的JRE已经解决了它。我的问题是,同一个映像导致服务器崩溃,下次可以正常上传。“听起来是个不错的选择”?做吧!这需要十分钟,如果这解决了你的问题,你就会知道。另外,脱离webapp,只需将上面的代码放在for循环中,并将其放到命令行应用程序中即可。文件上传部分似乎没有引起任何问题。感谢Brian的回复。迁移到新的JRE看起来是一个不错的选择,但我需要首先找出确切的问题,以确保迁移到新的JRE已经解决了它。我的问题是,同一个映像导致服务器崩溃,下次可以正常上传。“听起来是个不错的选择”?做吧!这需要十分钟,如果这解决了你的问题,你就会知道。另外,脱离webapp,只需将上面的代码放在for循环中,并将其放到命令行应用程序中即可。无论如何,文件上传部分似乎没有引起任何问题。
    
    Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
    j  com.sun.imageio.plugins.jpeg.JPEGImageReader.initJPEGImageReader()J+0
    j  com.sun.imageio.plugins.jpeg.JPEGImageReader.(Ljavax/imageio/spi/ImageReaderSpi;)V+174
    j  com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi.createReaderInstance(Ljava/lang/Object;)Ljavax/imageio/ImageReader;+5
    j  javax.imageio.spi.ImageReaderSpi.createReaderInstance()Ljavax/imageio/ImageReader;+2
    j  javax.imageio.ImageIO$ImageReaderIterator.next()Ljavax/imageio/ImageReader;+16
    j  javax.imageio.ImageIO$ImageReaderIterator.next()Ljava/lang/Object;+1
    j  com.sun.image.codec.jpeg.JPEGCodec$ImageIOJPEGImageDecoder.(Ljava/io/InputStream;)V+26
    j  com.sun.image.codec.jpeg.JPEGCodec$ImageIOJPEGImageDecoder.(Ljava/io/InputStream;Lcom/sun/image/codec/jpeg/JPEGCodec$1;)V+2
    j  com.sun.image.codec.jpeg.JPEGCodec.createJPEGDecoder(Ljava/io/InputStream;)Lcom/sun/image/codec/jpeg/JPEGImageDecoder;+6
    j  com.sun.media.jai.codecimpl.JPEGImage.(Ljava/io/InputStream;Lcom/sun/media/jai/codec/ImageDecodeParam;)V+35
    j  com.sun.media.jai.codecimpl.JPEGImageDecoder.decodeAsRenderedImage(I)Ljava/awt/image/RenderedImage;+29
    j  com.sun.media.jai.opimage.CodecRIFUtil.create(Ljava/lang/String;Ljava/awt/image/renderable/ParameterBlock;Ljava/awt/RenderingHints;)Ljava/awt/image/RenderedImage;+184
    j  com.sun.media.jai.opimage.JPEGRIF.create(Ljava/awt/image/renderable/ParameterBlock;Ljava/awt/RenderingHints;)Ljava/awt/image/RenderedImage;+4
    j  sun.reflect.GeneratedMethodAccessor740.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+48
    J  sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
    j  java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+161
    j  javax.media.jai.FactoryCache.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6
    j  javax.media.jai.OperationRegistry.invokeFactory(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;+57
    j  javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;+12
    j  javax.media.jai.registry.RIFRegistry.create(Ljavax/media/jai/OperationRegistry;Ljava/lang/String;Ljava/awt/image/renderable/ParameterBlock;Ljava/awt/RenderingHints;)Ljava/awt/image/RenderedImage;+35
    j  com.sun.media.jai.opimage.StreamRIF.create(Ljava/awt/image/renderable/ParameterBlock;Ljava/awt/RenderingHints;)Ljava/awt/image/RenderedImage;+191
    j  sun.reflect.GeneratedMethodAccessor740.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+48
    J  sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
    j  java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+161
    j  javax.media.jai.FactoryCache.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6
    j  javax.media.jai.OperationRegistry.invokeFactory(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;+57
    j  javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;+12
    j  javax.media.jai.registry.RIFRegistry.create(Ljavax/media/jai/OperationRegistry;Ljava/lang/String;Ljava/awt/image/renderable/ParameterBlock;Ljava/awt/RenderingHints;)Ljava/awt/image/RenderedImage;+35
    j  com.sun.media.jai.opimage.FileLoadRIF.create(Ljava/awt/image/renderable/ParameterBlock;Ljava/awt/RenderingHints;)Ljava/awt/image/RenderedImage;+158
    j  sun.reflect.GeneratedMethodAccessor740.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+48
    J  sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
    j  java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+161
    j  javax.media.jai.FactoryCache.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6
    j  javax.media.jai.OperationRegistry.invokeFactory(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;+57
    j  javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;+12
    j  javax.media.jai.registry.RIFRegistry.create(Ljavax/media/jai/OperationRegistry;Ljava/lang/String;Ljava/awt/image/renderable/ParameterBlock;Ljava/awt/RenderingHints;)Ljava/awt/image/RenderedImage;+35
    j  javax.media.jai.RenderedOp.createInstance(Z)Ljavax/media/jai/PlanarImage;+171
    J  javax.media.jai.RenderedOp.createRendering()V
    j  javax.media.jai.RenderedOp.getWidth()I+1
    j  com.myapp.helpers.conversion.DocumentConverter.transformImage(Lcom/myapp/helpers/conversion/PageImage;Ljava/lang/String;Lcom/myapp/helpers/conversion/ImageSetting;)Ljava/util/List;+39
    j  com.myapp.helpers.conversion.DocumentConverter.convertDocuments(Ljava/util/List;Ljava/lang/String;Lcom/myapp/helpers/conversion/ImageSetting;)Ljava/util/Map;+597
    J  com.myapp.helpers.conversion.ConversionTask.run()V
    
    JRE version: 6.0_22-b22