关于#java#的问题:然后我加载PNG图片2,加载后会占用两倍图片的内存,直到加载完毕才会释放这两倍内存

该问题来自社区帖: https://bbs.csdn.net/topics/614892847.为符合问答规范, 该问题经过ChatGPT优化

我有一个问题,我在代码中保存PNG图片1,保存后会占用1倍图片的内存。然后我加载PNG图片2,加载后会占用两倍图片的内存,直到加载完毕才会释放这两倍内存。我执行了m_image = QImage();来释放m_image的内存,但好像m_image的内存没有及时释放。

以下是保存PNG图片1的代码:

<void saveimage()>//保存PNG图片1
{
    QImageWriter writer(imgPath, "png");//保存已存在图片1
    if (!writer.write(m_image))
    {
        QString msg = QString("write image %1 failed ").arg(m_imgPath) + writer.errorString();
        QLOG_ERROR() << msg;
        qDebug() << msg;
    }
}</void>

以下是加载PNG图片2的代码:

<void loadimage()>//加载PNG图片2
{
    saveimage();
    QImageReader reader;
    if (IsFileExist(imagePath))//如果图片2存在则加载图片2
    {
        m_image = QImage();//释放m_image的内存
        reader.setFileName(imagePath);
        reader.setDecideFormatFromContent(true);
        if(reader.canRead())
        {
            if(reader.read(&m_image))
            {
                qDebug() << "Read successfully";
            }
        }
    }
}</void>

m_image = QImage(); 这个没看出是释放m_image的内存。只要不再使用 m_image,垃圾回收器在需要的时候会回收它的内存。