我在一个相当大的项目中使用 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/