[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[IDV #GOX-601682]: IDV out of memory error when running in minimized window



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