diff --git a/rosen/modules/render_service_base/src/render/rs_image_base.cpp b/rosen/modules/render_service_base/src/render/rs_image_base.cpp index e96856a46c..ac88d9b412 100644 --- a/rosen/modules/render_service_base/src/render/rs_image_base.cpp +++ b/rosen/modules/render_service_base/src/render/rs_image_base.cpp @@ -49,7 +49,11 @@ RSImageBase::~RSImageBase() #endif pixelMap_ = nullptr; if (uniqueId_ > 0) { - RSImageCache::Instance().CollectUniqueId(uniqueId_); + if (renderServiceImage_ || isDrawn_) { + RSImageCache::Instance().CollectUniqueId(uniqueId_); + } else { + RSImageCache::Instance().ReleasePixelMapCache(uniqueId_); + } } #if defined(ROSEN_OHOS) && defined(RS_ENABLE_VK) if (RSSystemProperties::GetGpuApiType() == GpuApiType::VULKAN ||