java - mt4j 和处理库 : clean image resources

标签 java processing mt4j

我在一个相当大的项目中使用 mt4j 库,其中的场景会定期推送和弹出; mt4j 使用 Processing 库来处理图像。

我们使用loadImage() 方法加载图片,但我不知道如何在弹出场景时从内存中删除这些图片;我们实际上有内存问题,因为在应用程序运行期间使用的内存会增加..

你有什么想法吗?

谢谢 杰里米

编辑:

我刚刚写了一个 ImageManager 类:

package managers;

import java.util.HashMap;
import java.util.Map;

import org.mt4j.MTApplication;

import processing.core.PImage;




public class ImageManager {

private static ImageManager mImageManager = null;

protected MTApplication mApp;
protected Map< String, PImage > mImages;

protected PImage mTempImg;

private ImageManager( MTApplication app ) {
    mApp = app;
    mImages = new HashMap< String, PImage >();
}

public static synchronized ImageManager getInstance( MTApplication app ) {
    if( mImageManager == null ) {
        mImageManager = new ImageManager( app );
    }

    return mImageManager;
}

/**
 * Load or retrieve img in memory
 * 
 * @param path Path to the image
 * @return <PImage> the image
 */
public PImage getImage( String path ) {
    // Search for image
    if( mImages.containsKey( path ) ) {
        System.out.println( "ImageManager::getImage : image found !" );
        mTempImg = mImages.get( path );
    } 
    else {
        System.out.println( "ImageManager::getImage : image not found, loading" );
        mTempImg = mApp.loadImage( path );
        mImages.put( path, mTempImg );
    }

    return mTempImg;
}
}

这是我的问题:我认为它可以帮助我解决内存问题,但每次加载图像时我仍然看到内存增加。使用示例:

ImageManager imgManager = ImageManager.getInstance( (MTApplication) app );
            PImage image = imgManager.getImage( getPathToIcons() + imagesNames[i] );
            //PImage image = app.loadImage(getPathToIcons() + imagesNames[i]);
            mSceneImages.add( image );

有什么想法吗?谢谢

编辑 2:事实上,这个方法很管用 :) 问题解决了!

最佳答案

或者只是重用它们?先image1 = loadImage(oneImage),再image1 = loadImage(anotherImage)?

关于java - mt4j 和处理库 : clean image resources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12815434/

相关文章:

java - 如何从不同的 Java 代码执行 Runnable JAR 的 main 方法?

java - 使用 joda time 确定 if 语句持续多长时间(处理)

java - 使用 libgdx 和 mt4j 在 Java 中跨平台多点触控和图形

java - 如何在java中解析文件名?

java - 如何使用 iText 将 Swing 组件绘制到 PDF 文件?

processing - 按下鼠标时随机化图像 - 处理

java - 如何将具有不同值的相同对象生成到 ArrayList 中?

java - 如何扩展一个组件?

java - 运行 MT4J 时出错

java - Java 中的动态查找器?