This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
Hi Hans- > I am using a simple isl script that loads a bundle and then goes into a loop > that saves an image every 60 minutes. The bundle that is being loaded just > regularly polls and plots certain METAR data. > > Running the script in a normal window works just fine, METAR data and the > corresponding plots are updated automatically with the polling interval. > > However, if I minimize the IDV window with the script still running, IDV > soon runs out of memory. It looks like that happens at the next data and > plot update (or a few updates later, not sure). It does not matter how much > memory is allocated, IDV still runs out of memory in minimized mode. In > non-minimized mode, IDV uses about 100 kB for this script and bundle and > fits well inside the 1 GB I have set for IDV, but in minimized mode IDV eats > up all the 1 GB memory and then stops working. > > So, what is going on with IDV memory management when running in a minimized > window do you think? Bad programming. ;-) There are two things going on: - you can't capture an image when the display is minimized. The display has to be rendered for it to be captured. That can either be onscreen or offscreen. - when it is minimized, the process to capture the image was not called and so it went into an infinite loop causing the memory buildup. We've fixed that and the fix will be in the next nightly build. However, with the fix, if the display is minimized, it will just sit there until the display is maximized, so you won't get any image captures (you should not have been getting them before either). > I am using IDV v 2.7b3 of June 18, but as far as I can remember, have had > this issue with several (if not all) IDV versions. It's been in there ever since the faulty logic was added. ;-) Instead of minimizing the window, set the offscreen flag in the ISL to true and you can call: runIDV.bat foo.isl where foo.isl is your isl script. That will run in the background without any display windows. Thanks for letting us know about this so we could fix it. Don Murray P.S. We found the problem you were having loading in the text point data and that fix is in 2.7b3. > The error messages follows below. > > > > Regards, > > Hans > > > > ------------------------- > > Exception in thread "D3D Screen Updater" java.lang.OutOfMemoryError: Java > heap s > > pace > > at java.lang.reflect.Array.newArray(Native Method) > > at java.lang.reflect.Array.newInstance(Array.java:52) > > at java.util.Arrays.copyOf(Arrays.java:2760) > > at java.util.ArrayList.toArray(ArrayList.java:305) > > at > sun.java2d.d3d.D3DScreenUpdateManager.run(D3DScreenUpdateManager.java > > :432) > > at java.lang.Thread.run(Thread.java:619) > > Exception in thread "Thread-69" java.lang.OutOfMemoryError: Java heap space > > at visad.Real.cloneButValue(Real.java:798) > > at > visad.data.mcidas.PointDataAdapter.makeField(PointDataAdapter.java:23 > > 8) > > at > visad.data.mcidas.PointDataAdapter.<init>(PointDataAdapter.java:89) > > at > ucar.unidata.data.point.AddePointDataSource.makeObs(AddePointDataSour > > ce.java:411) > > at > ucar.unidata.data.point.AddePointDataSource.makeObs(AddePointDataSour > > ce.java:362) > > at > ucar.unidata.data.point.PointDataSource.getDataInner(PointDataSource. > > java:1209) > > at > ucar.unidata.data.DataSourceImpl.getData(DataSourceImpl.java:2136) > > at > ucar.unidata.data.DirectDataChoice.getData(DirectDataChoice.java:332) > > > > at ucar.unidata.data.DataChoice.getData(DataChoice.java:637) > > at ucar.unidata.data.DataInstance.getData(DataInstance.java:239) > > at ucar.unidata.data.DataInstance.getData(DataInstance.java:203) > > at ucar.unidata.data.DataInstance.dataOk(DataInstance.java:282) > > at > ucar.unidata.data.point.PointDataInstance.init(PointDataInstance.java > > :85) > > at > ucar.unidata.data.point.PointDataInstance.<init>(PointDataInstance.ja > > va:71) > > at > ucar.unidata.idv.control.ObsDisplayControl.doMakeDataInstance(ObsDisp > > layControl.java:764) > > at > ucar.unidata.idv.control.DisplayControlImpl.initializeDataInstance(Di > > splayControlImpl.java:2968) > > at > ucar.unidata.idv.control.DisplayControlImpl.getDataInstance(DisplayCo > > ntrolImpl.java:3194) > > at > ucar.unidata.idv.control.DisplayControlImpl.getDataInstance(DisplayCo > > ntrolImpl.java:3178) > > at > ucar.unidata.idv.control.DisplayControlImpl.setData(DisplayControlImp > > l.java:2946) > > at > ucar.unidata.idv.control.StationModelControl.setData(StationModelCont > > rol.java:1417) > > at > ucar.unidata.idv.control.DisplayControlImpl.setData(DisplayControlImp > > l.java:2860) > > at > ucar.unidata.idv.control.DisplayControlImpl.resetData(DisplayControlI > > mpl.java:2751) > > at > ucar.unidata.idv.control.StationModelControl.resetData(StationModelCo > > ntrol.java:1878) > > at > ucar.unidata.idv.control.DisplayControlImpl.dataChanged(DisplayContro > > lImpl.java:2696) > > at > ucar.unidata.data.DataSourceImpl.notifyDataChange(DataSourceImpl.java > > :1357) > > at > ucar.unidata.data.DataSourceImpl.reloadData(DataSourceImpl.java:1331) > > > > at > ucar.unidata.data.FilesDataSource.reloadData(FilesDataSource.java:453 > > ) > > at > ucar.unidata.data.DataSourceImpl$2.doPoll(DataSourceImpl.java:1173) > > at ucar.unidata.util.Poller.run(Poller.java:125) > > at ucar.unidata.util.Misc$3.run(Misc.java:1061) > > ERROR: Error capturing image > > Java heap space > > Exception in thread "Thread-167" java.lang.OutOfMemoryError: Java heap space > > java.lang.OutOfMemoryError: Java heap space > > > Ticket Details =================== Ticket ID: GOX-601682 Department: Support IDV Priority: Normal Status: Open