Fixed memory leak that was introduced with the VirtualStack workaround - its still a workaround so CTRLHA-109

This commit is contained in:
ebner 2015-04-14 14:15:13 +02:00
parent 9ab9b8b355
commit bbefd328a8
3 changed files with 69 additions and 5 deletions

View File

@ -278,7 +278,7 @@ public class HDF5Reader implements PlugIn {
}
}
ImagePlus imp = new ImagePlus(filename + " " + datasetName, stack);
ImagePlus imp = new ImagePlusHDF5(filename + " " + datasetName, stack);
imp.resetDisplayRange();
imp.show();

View File

@ -0,0 +1,64 @@
package ch.psi.imagej.hdf5;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.logging.Logger;
import ij.ImagePlus;
import ij.ImageStack;
public class ImagePlusHDF5 extends ImagePlus {
private static final Logger logger = Logger.getLogger(ImagePlusHDF5.class.getName());
public ImagePlusHDF5(String title, ImageStack stack) {
super(title, stack);
}
@Override
public void show() {
super.show();
getWindow().addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
logger.info("");
}
@Override
public void windowIconified(WindowEvent e) {
logger.info("");
}
@Override
public void windowDeiconified(WindowEvent e) {
logger.info("");
}
@Override
public void windowDeactivated(WindowEvent e) {
logger.info("");
}
@Override
public void windowClosing(WindowEvent e) {
logger.info("Closing");
}
@Override
public void windowClosed(WindowEvent e) {
logger.info("Closed");
ImageStack stack = getStack();
if(stack instanceof VirtualStackHDF5){
((VirtualStackHDF5) stack).close();
}
}
@Override
public void windowActivated(WindowEvent e) {
logger.info("");
}
});
}
}

View File

@ -158,10 +158,10 @@ public class VirtualStackHDF5 extends ImageStack {
return bitDepth;
}
@Override
protected void finalize() throws Throwable {
super.finalize();
/**
* Close HDF5 file
*/
public void close() {
logger.info("Closing HDF5 file");
try{
file.close();