Actually, I think I see what's going on: * Every time you load an image it is saved in the ApplicationContext resource cache so it can be retrieved quickly if it is reused.
* There is no provision for limiting the size of that cache, so the cache continues to grow as it caches each of the images in your slideshow. So, the solution is simple: save the URL of the previous image and before doing the "setImage" of the new one, remove the old one from the cache like this: ApplicationContext.getResourceCache().remove(previousURL); HTH, ~Roger Whitcomb From: Roger L. Whitcomb [mailto:[email protected]] Sent: Wednesday, July 18, 2012 2:12 PM To: [email protected] Subject: RE: OutOfMemoryError - after calling ImageView.setImage(url) 50 times Hi Sridhar, How is the ImageView being displayed in Pivot? How exactly does the update to the next image occur? Someone else logged a bug about images used as window icons not being released in the image listener list, so this sounds a lot like the same problem. So, could you provide a small sample program that demonstrates the problem? One of us will be looking at the problem. Thank you for using Pivot, ~Roger Whitcomb From: Sridhar Sarnobat [mailto:[email protected]] Sent: Wednesday, July 18, 2012 2:03 PM To: [email protected] Subject: OutOfMemoryError - after calling ImageView.setImage(url) 50 times I have created a slideshow application using Apache Pivot, and it works great. But it reaches 285 MB after I cycle through about 50 jpg images, and starts throwing OOM errors. I have a memory leak that I don't know how to stop. I am manipulating java.io.File objects (not streams or readers) and I don't see any way to close these files. I believe that I am not releasing resources of a File 1 before calling the following line with File 2: org.apache.pivot.wtk.ImageView.setImage( java.io.File.toURI().toURL() ) I hope that's enough information. What am I doing wrong? I don't want to increase the available heap space. This is supposed to be a simple app.
