[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 usually minimize the display window not to obscure other things going on on 
> the desktop, and bring it back up when I want to sneak a peek at the current 
> plot. Guess that won't be possible, but at least IDV will not crash from now 
> on.

You can set your browser to load the image you are saving and keep reloading
that. ;-)  I've been doing this for testing.
 
> Would it be difficult to get IDV to perhaps behave as in off-screen mode when 
> minimized (just a thought)?

No, it's apples and oranges.  In offscreen mode, an offscreen canvas is
created, but when the isl is loaded from the onscreen IDV, it's an onscreen
canvas (even when offscreen is set to true).  

Don

> Thanks,
> Hans
> (should have been "100 MB", not "100 kB" below)
> 
> -----Original Message-----
> From: Unidata IDV Support [mailto:address@hidden]
> Sent: Friday, June 19, 2009 11:00 PM
> To: address@hidden
> Cc: address@hidden
> Subject: [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
> 
> 


Ticket Details
===================
Ticket ID: GOX-601682
Department: Support IDV
Priority: Normal
Status: Open