- To: OLVER OLFREY HERNANDEZ NAVARRO <oohernan@xxxxxxxxxxxxxxxxxxxx>
- Subject: Re: Memory use
- From: Tom Whittaker <tomw@xxxxxxxxxxxxx>
- Date: Mon, 07 Oct 2002 11:31:03 -0500
I created a little test program (at the end of this email), and observed
the following: If I do _not_ do a System.gc() just before printing out
the memory usage info, then the values support your observation (17.3MB
versus 12.3). However, after nulling out the data array and doing a
garbage collection, the values become 5.3MB and 8.3MB, respectively.
Therefore, your observation might not be completely representative of
how much memory is actually required. As far as I can tell, since your
range set has 255 elements, the data actually stored in the FlatField
should be in bytes.
Hope that helps... tom Here's the test program: import java.*; import visad.*; import java.lang.*; public class olver { public static void main(String[] a) { try { RealType rt1 = new RealType("xc"); RealType rt2 = new RealType("yc"); RealType rt3 = new RealType("rc"); RealTupleType dt = new RealTupleType(rt1,rt2); FunctionType ft = new FunctionType(dt, rt3); Integer2DSet ds = new Integer2DSet(1000,1000); Integer1DSet[] rs = { new Integer1DSet(rt3, 255)}; //FlatField ff = new FlatField(ft, ds, null, null, rs, null); FlatField ff = new FlatField(ft, ds, null, null, null, null); float[][] data = new float[1][1000 * 1000]; int z=0; for (int i=0; i<1000; i++) { for (int j=0; j<1000; j++) { data[0][z] = i+j; z++; } } ff.setSamples(data); data = null; System.gc(); double totalMemory = (double) Runtime.getRuntime ().totalMemory (); double freeMemory = (double) Runtime.getRuntime ().freeMemory (); double usedMemory = (totalMemory-freeMemory); int percent = (int)(100.0*(usedMemory/totalMemory)); totalMemory = totalMemory/1000000.0; usedMemory = usedMemory/1000000.0;System.out.println("#### total, used, percent="+totalMemory+" +usedMemory+" "+percent);
} catch (Exception e) {e.printStackTrace(); } } } OLVER OLFREY HERNANDEZ NAVARRO wrote:
Hi all. I'm working with Satellite Images, and I'm using visad to visualizate them. I need that visad use less memory, then I try to construct the FlatField in this way: new FlatField( func_domain_range, domain_set,null,null,new Integer1DSet[] {new Integer1DSet(varRaster,255)},null); but it spend more memory that in this way: new FlatField( func_domain_range, domain_set,null,null,null,null); Why the first one use more memory? Thank's -- Olver Hernández Facultad de Minas Universidad Nacional de Colombia Sede Medellín
-- Tom Whittaker (tomw@xxxxxxxxxxxxx) University of Wisconsin-Madison Space Science and Engineering Center Cooperative Institute for Meteorological Satellite Studies Phone/VoiceMail: 608.262.2759
- References:
- Memory use
- From: OLVER OLFREY HERNANDEZ NAVARRO
- Memory use