Skip to content

Memory leaks in webp render process #46

Closed
@Stafox

Description

@Stafox

Just move to new issue from this issue
Looks like the issue still exists for ios < 14.0
Can reproduce on devices with ios 12 and ios 13 while trying to render static WebP images (I see huge memory usage which cause app crash due to memory).
On ios14 works fine because SDWebImage v5.9.0 started to use native coder implementation.

In my pod manifest SDWebImageWebPCoder = 0.6.1.

  • SDWebImage (5.9.4):
    • SDWebImage/Core (= 5.9.4)
  • SDWebImage/Core (5.9.4)
  • SDWebImageWebPCoder (0.6.1):
    • libwebp (~> 1.0)
    • SDWebImage/Core (~> 5.7)

image

On that image shown memory usage when 28 images were rendered. Size of each image about 40-80 kb.

About code usage.

I render images using ImageBackground (which uses Image component. Native code is here) component.

Also to add support of webp I've used react-native-webp-format (native code is here).

- (RCTImageLoaderCancellationBlock)decodeImageData:(NSData *)imageData
                                              size:(CGSize)size
                                             scale:(CGFloat)scale
                                        resizeMode:(RCTResizeMode)resizeMode
                                 completionHandler:(RCTImageLoaderCompletionBlock)completionHandler
{
    UIImage *image = [[SDImageWebPCoder sharedCoder] decodedImageWithData:imageData options:nil];
    if (!image) {
      completionHandler(nil, nil);
      return ^{};
    }
    completionHandler(nil, image);
    return ^{};
}

Also a little bit more info about images:
I've generated them using imagick with the following options.

            $image->getImagick()->setOption('webp:low-memory', 'true');
            $image->getImagick()->setOption('webp:method', '6');
            $image->getImagick()->setImageFormat('WEBP');
            $image->getImagick()->unsharpMaskImage(0.25, 0.25, 8, 0.065);
            $image->getImagick()->setInterlaceScheme(\Imagick::INTERLACE_NO);
            $image->getImagick()->setColorspace(\Imagick::COLORSPACE_SRGB);
            $image->getImagick()->setCompression(\Imagick::COMPRESSION_LZMA);
            $image->getImagick()->setImageCompressionQuality(80);

Also image sample attached (i had put it into zip because github does not allow to attach webp).
thumb_dcee16ff-ac19-4452-8784-605ff9e39848_photos_medium.webp.zip

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions