public inbox for java@gcc.gnu.org
 help / color / mirror / Atom feed
* garbage collection take too much time to execute....
@ 2008-06-17 15:23 - -
  2008-06-17 17:53 ` Boehm, Hans
  2008-06-18 10:37 ` Andrew Haley
  0 siblings, 2 replies; 7+ messages in thread
From: - - @ 2008-06-17 15:23 UTC (permalink / raw)
  To: java; +Cc: decuplo

[-- Attachment #1: Type: text/plain, Size: 4395 bytes --]


Hi,
I found a strange behaviour on code generated by gcj when compare its output with code generated by eclipse.

Mainly the code generated by gcj  take too much time to  perform a memory  garbage collection (about 5 seconds) instead of only 15 milliseconds of byte code generated by eclipse.

The problem seems to happens when there are canvas and transform operations. I attach a simple snippet code that write a vertical text on canvas in order to reproduce the behaviour.

The gcj compiler I use is:
$ gcj --version
gcj.exe (GCC) 3.4.5 (mingw-vista special r3)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
with the swt version 3349:  "swt-gdip-win32-3349.dll"  and  "swt-win32-3349.dll"
 
I'm new of this discussion list, hoping not annoy you. It is a trouble or it is just a mistake on usage of transform?
thanks you,

x10

Here is the code....

-------------------------
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Transform;

public class snippet {

	private Shell sShell = null;  //  @jve:decl-index=0:visual-constraint="10,10"
	private Button button = null;
	private Canvas canvas = null;

	/**
	 * This method initializes canvas	
	 *
	 */
	private void createCanvas() {
		GridData gridData = new GridData();
		gridData.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
		gridData.grabExcessHorizontalSpace = true;
		gridData.grabExcessVerticalSpace = true;
		gridData.verticalAlignment = org.eclipse.swt.layout.GridData.FILL;
		canvas = new Canvas(sShell, SWT.BORDER);
		canvas.setLayoutData(gridData);
		canvas.addPaintListener(new org.eclipse.swt.events.PaintListener() {
			public void paintControl(org.eclipse.swt.events.PaintEvent e) {
				System.out.println("paintControl()"); // TODO Auto-generated Event stub paintControl()
				GC gc = e.gc;

				int xVertical = 200;
				int yVertical = 200;
				Transform t = new Transform(gc.getDevice());
				t.translate(xVertical, yVertical);
				t.rotate(-90f);
				gc.setTransform(t);

				gc.drawText("Vertical Text",0,0);

				t.rotate(90f);
				t.translate(-xVertical, -yVertical);
				gc.setTransform(t);
				t.dispose();
			
			}
		});
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/* Before this is run, be sure to set up the launch configuration (Arguments->VM Arguments)
		 * for the correct SWT library path in order to run with the SWT dlls. 
		 * The dlls are located in the SWT plugin jar.  
		 * For example, on Windows the Eclipse SWT 3.1 plugin jar is:
		 *       installation_directory\plugins\org.eclipse.swt.win32_3.1.0.jar
		 */
		Display display = Display.getDefault();
		snippet thisClass = new snippet();
		thisClass.createSShell();
		thisClass.sShell.open();

		while (!thisClass.sShell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}

	/**
	 * This method initializes sShell
	 */
	private void createSShell() {
		GridData gridData1 = new GridData();
		gridData1.horizontalAlignment = org.eclipse.swt.layout.GridData.CENTER;
		sShell = new Shell();
		sShell.setText("Shell");
		sShell.setSize(new Point(579, 365));
		sShell.setLayout(new GridLayout());
		button = new Button(sShell, SWT.NONE);
		button.setText("Press me to redraw the canvas");
		button.setLayoutData(gridData1);
		button.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				System.out.println("widgetSelected()"); // TODO Auto-generated Event stub widgetSelected()

				canvas.redraw();		
				System.err.println("start");
				long before = System.currentTimeMillis();
				System.gc();
				long after = System.currentTimeMillis();
				System.err.println("Elapsed milliseconds: " + (after-before));
				System.err.println("end");
			}
		});
		createCanvas();
	}

}
----------------------------










The java code attached is 



      

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: snippet.java --]
[-- Type: text/x-java; name="snippet.java", Size: 3391 bytes --]


import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Transform;

public class snippet {

	private Shell sShell = null;  //  @jve:decl-index=0:visual-constraint="10,10"
	private Button button = null;
	private Canvas canvas = null;

	/**
	 * This method initializes canvas	
	 *
	 */
	private void createCanvas() {
		GridData gridData = new GridData();
		gridData.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
		gridData.grabExcessHorizontalSpace = true;
		gridData.grabExcessVerticalSpace = true;
		gridData.verticalAlignment = org.eclipse.swt.layout.GridData.FILL;
		canvas = new Canvas(sShell, SWT.BORDER);
		canvas.setLayoutData(gridData);
		canvas.addPaintListener(new org.eclipse.swt.events.PaintListener() {
			public void paintControl(org.eclipse.swt.events.PaintEvent e) {
				System.out.println("paintControl()"); // TODO Auto-generated Event stub paintControl()
				GC gc = e.gc;

				int xVertical = 200;
				int yVertical = 200;
				Transform t = new Transform(gc.getDevice());
				t.translate(xVertical, yVertical);
				t.rotate(-90f);
				gc.setTransform(t);

				gc.drawText("Vertical Text",0,0);

				t.rotate(90f);
				t.translate(-xVertical, -yVertical);
				gc.setTransform(t);
				t.dispose();
			
			}
		});
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/* Before this is run, be sure to set up the launch configuration (Arguments->VM Arguments)
		 * for the correct SWT library path in order to run with the SWT dlls. 
		 * The dlls are located in the SWT plugin jar.  
		 * For example, on Windows the Eclipse SWT 3.1 plugin jar is:
		 *       installation_directory\plugins\org.eclipse.swt.win32_3.1.0.jar
		 */
		Display display = Display.getDefault();
		snippet thisClass = new snippet();
		thisClass.createSShell();
		thisClass.sShell.open();

		while (!thisClass.sShell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}

	/**
	 * This method initializes sShell
	 */
	private void createSShell() {
		GridData gridData1 = new GridData();
		gridData1.horizontalAlignment = org.eclipse.swt.layout.GridData.CENTER;
		sShell = new Shell();
		sShell.setText("Shell");
		sShell.setSize(new Point(579, 365));
		sShell.setLayout(new GridLayout());
		button = new Button(sShell, SWT.NONE);
		button.setText("Press me to redraw the canvas");
		button.setLayoutData(gridData1);
		button.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				System.out.println("widgetSelected()"); // TODO Auto-generated Event stub widgetSelected()

				canvas.redraw();		
				System.err.println("start");
				long before = System.currentTimeMillis();
				System.gc();
				long after = System.currentTimeMillis();
				System.err.println("Elapsed milliseconds: " + (after-before));
				System.err.println("end");
			}
		});
		createCanvas();
	}

}

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: garbage collection take too much time to execute....
  2008-06-17 15:23 garbage collection take too much time to execute - -
@ 2008-06-17 17:53 ` Boehm, Hans
  2008-06-17 21:44   ` - -
  2008-06-18 10:37 ` Andrew Haley
  1 sibling, 1 reply; 7+ messages in thread
From: Boehm, Hans @ 2008-06-17 17:53 UTC (permalink / raw)
  To: decuplo, java

Did you try with a recent version of gcj?

In the past, there have been problems with the collector looking for pointers in graphics memory.  You can try running the program with the GC_DUMP_REGULARLY environment variable set, and look at the size of the root sets.  If it appears to include your graphics memory, then that's probably the issue.

If not, GC_PRINT_STATS output might be helpful.

Hans

> -----Original Message-----
> From: java-owner@gcc.gnu.org [mailto:java-owner@gcc.gnu.org]
> On Behalf Of - -
> Sent: Tuesday, June 17, 2008 8:23 AM
> To: java@gcc.gnu.org
> Cc: decuplo@yahoo.com
> Subject: garbage collection take too much time to execute....
>
>
> Hi,
> I found a strange behaviour on code generated by gcj when
> compare its output with code generated by eclipse.
>
> Mainly the code generated by gcj  take too much time to
> perform a memory  garbage collection (about 5 seconds)
> instead of only 15 milliseconds of byte code generated by eclipse.
>
> The problem seems to happens when there are canvas and
> transform operations. I attach a simple snippet code that
> write a vertical text on canvas in order to reproduce the behaviour.
>
> The gcj compiler I use is:
> $ gcj --version
> gcj.exe (GCC) 3.4.5 (mingw-vista special r3) Copyright (C)
> 2004 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.
>  There is NO warranty; not even for MERCHANTABILITY or
> FITNESS FOR A PARTICULAR PURPOSE.
>
> with the swt version 3349:  "swt-gdip-win32-3349.dll"  and
> "swt-win32-3349.dll"
>
> I'm new of this discussion list, hoping not annoy you. It is
> a trouble or it is just a mistake on usage of transform?
> thanks you,
>
> x10
>
> Here is the code....
>
> -------------------------
> import org.eclipse.swt.layout.GridLayout;
> import org.eclipse.swt.graphics.Point;
> import org.eclipse.swt.widgets.Shell;
> import org.eclipse.swt.widgets.Display;
> import org.eclipse.swt.widgets.Button;
> import org.eclipse.swt.SWT;
> import org.eclipse.swt.widgets.Canvas;
> import org.eclipse.swt.layout.GridData;
> import org.eclipse.swt.graphics.GC;
> import org.eclipse.swt.graphics.Transform;
>
> public class snippet {
>
>         private Shell sShell = null;  //
> @jve:decl-index=0:visual-constraint="10,10"
>         private Button button = null;
>         private Canvas canvas = null;
>
>         /**
>          * This method initializes canvas
>          *
>          */
>         private void createCanvas() {
>                 GridData gridData = new GridData();
>                 gridData.horizontalAlignment =
> org.eclipse.swt.layout.GridData.FILL;
>                 gridData.grabExcessHorizontalSpace = true;
>                 gridData.grabExcessVerticalSpace = true;
>                 gridData.verticalAlignment =
> org.eclipse.swt.layout.GridData.FILL;
>                 canvas = new Canvas(sShell, SWT.BORDER);
>                 canvas.setLayoutData(gridData);
>                 canvas.addPaintListener(new
> org.eclipse.swt.events.PaintListener() {
>                         public void
> paintControl(org.eclipse.swt.events.PaintEvent e) {
>
> System.out.println("paintControl()"); // TODO Auto-generated
> Event stub paintControl()
>                                 GC gc = e.gc;
>
>                                 int xVertical = 200;
>                                 int yVertical = 200;
>                                 Transform t = new
> Transform(gc.getDevice());
>                                 t.translate(xVertical, yVertical);
>                                 t.rotate(-90f);
>                                 gc.setTransform(t);
>
>                                 gc.drawText("Vertical Text",0,0);
>
>                                 t.rotate(90f);
>                                 t.translate(-xVertical, -yVertical);
>                                 gc.setTransform(t);
>                                 t.dispose();
>
>                         }
>                 });
>         }
>
>         /**
>          * @param args
>          */
>         public static void main(String[] args) {
>                 // TODO Auto-generated method stub
>                 /* Before this is run, be sure to set up the
> launch configuration (Arguments->VM Arguments)
>                  * for the correct SWT library path in order
> to run with the SWT dlls.
>                  * The dlls are located in the SWT plugin jar.
>                  * For example, on Windows the Eclipse SWT
> 3.1 plugin jar is:
>                  *
> installation_directory\plugins\org.eclipse.swt.win32_3.1.0.jar
>                  */
>                 Display display = Display.getDefault();
>                 snippet thisClass = new snippet();
>                 thisClass.createSShell();
>                 thisClass.sShell.open();
>
>                 while (!thisClass.sShell.isDisposed()) {
>                         if (!display.readAndDispatch())
>                                 display.sleep();
>                 }
>                 display.dispose();
>         }
>
>         /**
>          * This method initializes sShell
>          */
>         private void createSShell() {
>                 GridData gridData1 = new GridData();
>                 gridData1.horizontalAlignment =
> org.eclipse.swt.layout.GridData.CENTER;
>                 sShell = new Shell();
>                 sShell.setText("Shell");
>                 sShell.setSize(new Point(579, 365));
>                 sShell.setLayout(new GridLayout());
>                 button = new Button(sShell, SWT.NONE);
>                 button.setText("Press me to redraw the canvas");
>                 button.setLayoutData(gridData1);
>                 button.addSelectionListener(new
> org.eclipse.swt.events.SelectionAdapter() {
>                         public void
> widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
>
> System.out.println("widgetSelected()"); // TODO
> Auto-generated Event stub widgetSelected()
>
>                                 canvas.redraw();
>                                 System.err.println("start");
>                                 long before =
> System.currentTimeMillis();
>                                 System.gc();
>                                 long after =
> System.currentTimeMillis();
>                                 System.err.println("Elapsed
> milliseconds: " + (after-before));
>                                 System.err.println("end");
>                         }
>                 });
>                 createCanvas();
>         }
>
> }
> ----------------------------
>
>
>
>
>
>
>
>
>
>
> The java code attached is
>
>
>
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: garbage collection take too much time to execute....
  2008-06-17 17:53 ` Boehm, Hans
@ 2008-06-17 21:44   ` - -
  2008-06-18  5:39     ` Hans Boehm
  0 siblings, 1 reply; 7+ messages in thread
From: - - @ 2008-06-17 21:44 UTC (permalink / raw)
  To: java, Boehm, Hans

[-- Attachment #1: Type: text/plain, Size: 2727 bytes --]

Hi,
I run the program with both environment variables set to 1.
Previous I run with just one single variable set.

export GC_DUMP_REGULARLY=1
export GC_PRINT_STATS=1

As you can see, the first time when button is pushed 
the output is about 12 seconds!!! .
Next the run is about 5 seconds....

I'll try to setup a compiler environment with more recent release of gcj and come back with results. 
 
In the mean time I tried to understand the output of code but I'm a novice and need help.


$ snippet.exe 
paintControl()
widgetSelected()
start
Elapsed milliseconds: 11921
end
paintControl()
widgetSelected()
start
Elapsed milliseconds: 4765
end
paintControl()
widgetSelected()
start
Elapsed milliseconds: 4750
end
paintControl()
widgetSelected()
start
Elapsed milliseconds: 4812
end
paintControl()



thanks
x10.




--- On Tue, 6/17/08, Boehm, Hans  wrote:

> From: Boehm, Hans <hans.boehm@hp.com>
> Subject: RE: garbage collection take too much time to execute....

> Date: Tuesday, June 17, 2008, 7:51 PM
> Did you try with a recent version of gcj?
> 
> In the past, there have been problems with the collector
> looking for pointers in graphics memory.  You can try
> running the program with the GC_DUMP_REGULARLY environment
> variable set, and look at the size of the root sets.  If it
> appears to include your graphics memory, then that's
> probably the issue.
> 
> If not, GC_PRINT_STATS output might be helpful.
> 
> Hans
> 
> > -----Original Message-----
> > On Behalf Of - -
> > Sent: Tuesday, June 17, 2008 8:23 AM
> > Subject: garbage collection take too much time to
> execute....
> >
> >
> > Hi,
> > I found a strange behaviour on code generated by gcj
> when
> > compare its output with code generated by eclipse.
> >
> > Mainly the code generated by gcj  take too much time
> to
> > perform a memory  garbage collection (about 5 seconds)
> > instead of only 15 milliseconds of byte code generated
> by eclipse.
> >
> > The problem seems to happens when there are canvas and
> > transform operations. I attach a simple snippet code
> that
> > write a vertical text on canvas in order to reproduce
> the behaviour.
> >
> > The gcj compiler I use is:
> > $ gcj --version
> > gcj.exe (GCC) 3.4.5 (mingw-vista special r3) Copyright
> (C)
> > 2004 Free Software Foundation, Inc.
> > This is free software; see the source for copying
> conditions.
> >  There is NO warranty; not even for MERCHANTABILITY or
> > FITNESS FOR A PARTICULAR PURPOSE.
> >
> > with the swt version 3349: 
> "swt-gdip-win32-3349.dll"  and
> > "swt-win32-3349.dll"
> >
> > I'm new of this discussion list, hoping not annoy
> you. It is
> > a trouble or it is just a mistake on usage of
> transform?
> > thanks you,
> >
> > x10
> >
> 


      

[-- Attachment #2: gc.log --]
[-- Type: application/octet-stream, Size: 28961 bytes --]

Increasing heap size by 65536 after 0 allocated bytes
***Static roots:
Total size: 0

***Heap sections:
Total heap size: 65536
Section 0 from 0xea0000 to 0xeb0000 0/16 blacklisted

***Free blocks:
Free list 16 (Total size 65536):
	0xea0000 size 65536 not black listed
Total of 65536 bytes on free list

***Blocks in use:
(kind(0=ptrfree,1=normal,2=unc.,3=stubborn):size_in_bytes, #_marks_set)

blocks = 0, bytes = 0

***Finalization statistics:
0 finalization table entries; 0 disappearing links
0 objects are eligible for immediate finalization
Initiating full world-stop collection 1 after 0 allocd bytes
--> Marking for collection 1 after 0 allocd bytes + 0 wasted bytes
Found new system malloc AllocationBase at 0x3f0000
Collection 0 finished ---> heapsize = 65536 bytes
World-stopped marking took 16 msecs
***Static roots:
From 0x10000 to 0x12000  (temporary)
From 0x20000 to 0x21000  (temporary)
From 0x22d000 to 0x22d000  (temporary)
From 0x230000 to 0x238000  (temporary)
From 0x330000 to 0x333000  (temporary)
From 0x828000 to 0x82c000  (temporary)
From 0x82d000 to 0x82e000  (temporary)
From 0x82f000 to 0x830000  (temporary)
From 0x831000 to 0x832000  (temporary)
From 0x83f000 to 0x842000  (temporary)
From 0x843000 to 0x857000  (temporary)
From 0x858000 to 0x8c2000  (temporary)
From 0x961000 to 0x962000  (temporary)
From 0x966000 to 0x968000  (temporary)
From 0x973000 to 0x975000  (temporary)
From 0x976000 to 0x977000  (temporary)
From 0x978000 to 0x97a000  (temporary)
From 0x97d000 to 0x97f000  (temporary)
From 0x981000 to 0x986000  (temporary)
From 0xdd0000 to 0xdd8000  (temporary)
From 0xde0000 to 0xde1000  (temporary)
From 0xdf0000 to 0xdf1000  (temporary)
From 0xe00000 to 0xe03000  (temporary)
From 0xe40000 to 0xe41000  (temporary)
From 0x66687000 to 0x66688000  (temporary)
From 0x6668b000 to 0x6668d000  (temporary)
From 0x6ca65000 to 0x6ca66000  (temporary)
From 0x75025000 to 0x75026000  (temporary)
From 0x75041000 to 0x75042000  (temporary)
From 0x75e73000 to 0x75e74000  (temporary)
From 0x77d98000 to 0x77d9a000  (temporary)
From 0x77e63000 to 0x77e64000  (temporary)
From 0x77f78000 to 0x77f79000  (temporary)
From 0x77fce000 to 0x77fd1000  (temporary)
From 0x7803a000 to 0x7803c000  (temporary)
From 0x78040000 to 0x78041000  (temporary)
From 0x7c32d000 to 0x7c32e000  (temporary)
From 0x7c34c000 to 0x7c34d000  (temporary)
From 0x7c5cb000 to 0x7c5cf000  (temporary)
From 0x7ffde000 to 0x7ffe0000  (temporary)
Total size: 835584

***Heap sections:
Total heap size: 65536
Section 0 from 0xea0000 to 0xeb0000 1/16 blacklisted

***Free blocks:
Free list 16 (Total size 65536):
	0xea0000 size 65536 not black listed
Total of 65536 bytes on free list

***Blocks in use:
(kind(0=ptrfree,1=normal,2=unc.,3=stubborn):size_in_bytes, #_marks_set)

blocks = 0, bytes = 0

***Finalization statistics:
0 finalization table entries; 0 disappearing links
0 objects are eligible for immediate finalization
Complete collection took 94 msecs
Grew fo table to 1 entries
Grew fo table to 2 entries
Grew fo table to 4 entries
Grew fo table to 8 entries
Grew fo table to 16 entries
Increasing heap size by 65536 after 11684 allocated bytes
Grew fo table to 32 entries
Grew fo table to 64 entries
Grew fo table to 128 entries
Increasing heap size by 65536 after 27108 allocated bytes
Grew fo table to 256 entries
Increasing heap size by 69632 after 74124 allocated bytes
Increasing heap size by 176128 after 76156 allocated bytes
Grew fo table to 512 entries
Increasing heap size by 151552 after 314660 allocated bytes
Grew fo table to 1024 entries
Increasing heap size by 200704 after 438236 allocated bytes
Grew fo table to 2048 entries
Initiating full world-stop collection 2 after 602420 allocd bytes
--> Marking for collection 2 after 602420 allocd bytes + 36316 wasted bytes
Found new system malloc AllocationBase at 0xfc0000
Mark stack overflow; current size = 4096 entries
Mark stack overflow; current size = 4096 entries
Grew mark stack to 8192 frames
Collection 1 finished ---> heapsize = 827392 bytes
World-stopped marking took 10109 msecs
***Static roots:
From 0x10000 to 0x12000  (temporary)
From 0x20000 to 0x21000  (temporary)
From 0x22b000 to 0x22b000  (temporary)
From 0x230000 to 0x247000  (temporary)
From 0x330000 to 0x333000  (temporary)
From 0x828000 to 0x82c000  (temporary)
From 0x82d000 to 0x82e000  (temporary)
From 0x82f000 to 0x830000  (temporary)
From 0x831000 to 0x834000  (temporary)
From 0x83f000 to 0x842000  (temporary)
From 0x843000 to 0x857000  (temporary)
From 0x858000 to 0x8c2000  (temporary)
From 0x961000 to 0x972000  (temporary)
From 0x973000 to 0x97a000  (temporary)
From 0x97d000 to 0x97f000  (temporary)
From 0x981000 to 0x986000  (temporary)
From 0xdd0000 to 0xddb000  (temporary)
From 0xde0000 to 0xde1000  (temporary)
From 0xdf0000 to 0xdf1000  (temporary)
From 0xe00000 to 0xe08000  (temporary)
From 0xe40000 to 0xe41000  (temporary)
From 0x12bf000 to 0x12bf000  (temporary)
From 0x1300000 to 0x1304000  (temporary)
From 0x1310000 to 0x1320000  (temporary)
From 0x1710000 to 0x1718000  (temporary)
From 0x1720000 to 0x1728000  (temporary)
From 0x1820000 to 0x1824000  (temporary)
From 0x1830000 to 0x1831000  (temporary)
From 0x1840000 to 0x1841000  (temporary)
From 0x18c7000 to 0x18c8000  (temporary)
From 0x18c9000 to 0x18cb000  (temporary)
From 0x18d0000 to 0x18d4000  (temporary)
From 0x18f0000 to 0x18f2000  (temporary)
From 0x1900000 to 0x1903000  (temporary)
From 0x1910000 to 0x1918000  (temporary)
From 0x1920000 to 0x1928000  (temporary)
From 0x1a20000 to 0x1a30000  (temporary)
From 0x1c2f000 to 0x1c30000  (temporary)
From 0x1c40000 to 0x1c7c000  (temporary)
From 0x1d40000 to 0x1d41000  (temporary)
From 0x1d50000 to 0x2446000  (temporary)
From 0x2450000 to 0x2b46000  (temporary)
From 0x2b50000 to 0x2b52000  (temporary)
From 0x2bb0000 to 0x2bb4000  (temporary)
From 0x61dc000 to 0x61dd000  (temporary)
From 0x61de000 to 0x61e2000  (temporary)
From 0x10044000 to 0x10049000  (temporary)
From 0x63076000 to 0x63078000  (temporary)
From 0x6307a000 to 0x6307d000  (temporary)
From 0x66684000 to 0x66685000  (temporary)
From 0x66687000 to 0x66689000  (temporary)
From 0x6668b000 to 0x6668d000  (temporary)
From 0x6ca65000 to 0x6ca66000  (temporary)
From 0x6e423000 to 0x6e424000  (temporary)
From 0x70acc000 to 0x70ace000  (temporary)
From 0x70e6b000 to 0x70e6e000  (temporary)
From 0x71770000 to 0x71771000  (temporary)
From 0x728a3000 to 0x728a4000  (temporary)
From 0x75025000 to 0x75026000  (temporary)
From 0x75041000 to 0x75042000  (temporary)
From 0x75e73000 to 0x75e74000  (temporary)
From 0x76b5b000 to 0x76b5c000  (temporary)
From 0x7743e000 to 0x7743f000  (temporary)
From 0x77a3c000 to 0x77a43000  (temporary)
From 0x77d98000 to 0x77d9a000  (temporary)
From 0x77e63000 to 0x77e64000  (temporary)
From 0x77f78000 to 0x77f79000  (temporary)
From 0x77fce000 to 0x77fd1000  (temporary)
From 0x7803a000 to 0x7803c000  (temporary)
From 0x7803e000 to 0x78041000  (temporary)
From 0x7c32d000 to 0x7c32e000  (temporary)
From 0x7c34c000 to 0x7c34d000  (temporary)
From 0x7c5cb000 to 0x7c5cf000  (temporary)
From 0x7c7bf000 to 0x7c7c0000  (temporary)
From 0x7cefb000 to 0x7cefc000  (temporary)
From 0x7cefd000 to 0x7cf02000  (temporary)
From 0x7d04c000 to 0x7d04f000  (temporary)
From 0x7ffdc000 to 0x7ffe0000  (temporary)
Total size: 16429056

***Heap sections:
Total heap size: 827392
Section 0 from 0xea0000 to 0xeb0000 1/16 blacklisted
Section 1 from 0xee0000 to 0xef0000 0/16 blacklisted
Section 2 from 0xf00000 to 0xf10000 0/16 blacklisted
Section 3 from 0xf40000 to 0xf51000 0/17 blacklisted
Section 4 from 0xf60000 to 0xf8b000 1/43 blacklisted
Section 5 from 0xf90000 to 0xfb5000 2/37 blacklisted
Section 6 from 0x12c0000 to 0x12f1000 2/49 blacklisted
Section 7 from 0xe80000 to 0xe88000 0/8 blacklisted

***Free blocks:
Free list 1 (Total size 4096):
	0x12f0000 size 4096 not black listed
Free list 8 (Total size 32768):
	0xe80000 size 32768 not black listed
Total of 36864 bytes on free list

***Blocks in use:
(kind(0=ptrfree,1=normal,2=unc.,3=stubborn):size_in_bytes, #_marks_set)
(0:24,130)(0:24,170)(1:4096,0)(1:24,170)(0:48,59)(0:64,37)(0:40,62)(0:32,111)(0:312,2)(2:8,1024)(0:8,1)(1:24,170)(0:512,0)(0:16392,1)(0:2056,0)(4:16,252)(4:16,256)(0:2056,0)(0:112,13)(4:24,71)(0:80,51)(4:48,82)(0:96,26)(0:128,25)(4:48,85)(0:112,36)(4:24,170)(0:152,17)(4:16,253)(4:48,85)(0:152,26)(0:128,32)(0:96,40)(4:48,85)(0:112,36)(4:24,170)(0:152,26)(4:48,85)(0:128,32)(0:96,41)(0:152,26)(0:80,51)(4:16,256)(4:48,85)(4:24,170)(0:128,32)(0:112,36)(4:48,85)(4:48,85)(0:128,32)(0:112,36)(4:24,170)(0:96,42)(0:80,51)(6:86024,1)(4:16,256)(4:48,85)(4:48,85)(0:112,36)(4:24,170)(0:96,42)(4:48,85)(0:80,51)(0:96,42)(4:16,256)(1:6096,1)(0:2056,1)(4:48,85)(4:64,1)(1:2048,0)(4:16,256)(0:176,6)(1:48,4)(4:56,2)(1:24,170)(4:16,246)(4:16,256)(4:16,256)(1:10760,0)(1:1360,0)(1:176,2)(1:1024,0)(0:584,2)(0:2056,1)(4:32,14)(0:112,36)(0:256,4)(1:112,0)(0:128,29)(4:24,153)(1:512,2)(1:56,15)(4:40,27)(4:16,252)(0:64,63)(0:96,37)(0:56,66)(1:256,2)(0:152,25)(4:128,32)(1:128,1)(1:64,3)(1:32,16)(1:16,40)(0:80,48)(0:48,79)(1:24,170)(1:8,4)(0:24,147)(4:8,30)(0:4096,0)(0:40,88)(0:32,118)(0:16,88)(0:2052,1)(0:2052,1)(0:2052,1)(1:24,7)(1:24,0)(0:96,1)(0:96,0)(4:16,85)(4:16,256)(4:16,256)(4:16,256)(4:16,256)(4:152,0)(1:24,11)(0:96,1)(0:96,0)(4:112,1)(4:48,0)(0:48,10)(0:96,0)(4:256,1)(4:96,5)(1:96,1)(1:8192,1)(1:24,110)(0:24,6)(1:4104,1)(0:4104,1)(0:96,2)(4:512,1)(4:80,0)(0:96,0)(4:16,215)(4:16,256)(4:16,256)(4:16,256)(4:16,248)(4:16,256)(0:80,15)(0:56,43)(1:152,1)(1:40,3)(0:2048,2)(0:1024,3)(1:24,166)(0:8192,1)(1:24,170)
blocks = 161, bytes = 790528

***Finalization statistics:
1136 finalization table entries; 0 disappearing links
0 objects are eligible for immediate finalization
Complete collection took 11922 msecs
Initiating full world-stop collection 3 after 5296 allocd bytes
--> Marking for collection 3 after 5296 allocd bytes + 0 wasted bytes
Collection 2 finished ---> heapsize = 827392 bytes
World-stopped marking took 4547 msecs
***Static roots:
From 0x10000 to 0x12000  (temporary)
From 0x20000 to 0x21000  (temporary)
From 0x22b000 to 0x22b000  (temporary)
From 0x230000 to 0x247000  (temporary)
From 0x330000 to 0x333000  (temporary)
From 0x828000 to 0x82c000  (temporary)
From 0x82d000 to 0x82e000  (temporary)
From 0x82f000 to 0x830000  (temporary)
From 0x831000 to 0x834000  (temporary)
From 0x83f000 to 0x842000  (temporary)
From 0x843000 to 0x857000  (temporary)
From 0x858000 to 0x8c2000  (temporary)
From 0x961000 to 0x972000  (temporary)
From 0x973000 to 0x97a000  (temporary)
From 0x97d000 to 0x97f000  (temporary)
From 0x981000 to 0x986000  (temporary)
From 0xdd0000 to 0xddb000  (temporary)
From 0xde0000 to 0xde1000  (temporary)
From 0xdf0000 to 0xdf1000  (temporary)
From 0xe00000 to 0xe08000  (temporary)
From 0xe40000 to 0xe41000  (temporary)
From 0x12bf000 to 0x12bf000  (temporary)
From 0x1300000 to 0x1304000  (temporary)
From 0x1310000 to 0x1320000  (temporary)
From 0x1710000 to 0x1718000  (temporary)
From 0x1720000 to 0x1728000  (temporary)
From 0x1820000 to 0x1824000  (temporary)
From 0x1830000 to 0x1831000  (temporary)
From 0x1840000 to 0x1841000  (temporary)
From 0x18c7000 to 0x18c8000  (temporary)
From 0x18c9000 to 0x18cb000  (temporary)
From 0x18d0000 to 0x18d4000  (temporary)
From 0x18f0000 to 0x18f2000  (temporary)
From 0x1900000 to 0x1903000  (temporary)
From 0x1910000 to 0x1918000  (temporary)
From 0x1920000 to 0x1928000  (temporary)
From 0x1a20000 to 0x1a30000  (temporary)
From 0x1c2f000 to 0x1c30000  (temporary)
From 0x1c40000 to 0x1c7c000  (temporary)
From 0x1d40000 to 0x1d41000  (temporary)
From 0x1d50000 to 0x2446000  (temporary)
From 0x2450000 to 0x2b46000  (temporary)
From 0x2b50000 to 0x2b52000  (temporary)
From 0x2bb0000 to 0x2bb4000  (temporary)
From 0x61dc000 to 0x61dd000  (temporary)
From 0x61de000 to 0x61e2000  (temporary)
From 0x10044000 to 0x10049000  (temporary)
From 0x63076000 to 0x63078000  (temporary)
From 0x6307a000 to 0x6307d000  (temporary)
From 0x66684000 to 0x66685000  (temporary)
From 0x66687000 to 0x66689000  (temporary)
From 0x6668b000 to 0x6668d000  (temporary)
From 0x6ca65000 to 0x6ca66000  (temporary)
From 0x6e423000 to 0x6e424000  (temporary)
From 0x70acc000 to 0x70ace000  (temporary)
From 0x70e6b000 to 0x70e6e000  (temporary)
From 0x71770000 to 0x71771000  (temporary)
From 0x728a3000 to 0x728a4000  (temporary)
From 0x75025000 to 0x75026000  (temporary)
From 0x75041000 to 0x75042000  (temporary)
From 0x75e73000 to 0x75e74000  (temporary)
From 0x76b5b000 to 0x76b5c000  (temporary)
From 0x7743e000 to 0x7743f000  (temporary)
From 0x77a3c000 to 0x77a43000  (temporary)
From 0x77d98000 to 0x77d9a000  (temporary)
From 0x77e63000 to 0x77e64000  (temporary)
From 0x77f78000 to 0x77f79000  (temporary)
From 0x77fce000 to 0x77fd1000  (temporary)
From 0x7803a000 to 0x7803c000  (temporary)
From 0x7803e000 to 0x78041000  (temporary)
From 0x7c32d000 to 0x7c32e000  (temporary)
From 0x7c34c000 to 0x7c34d000  (temporary)
From 0x7c5cb000 to 0x7c5cf000  (temporary)
From 0x7c7bf000 to 0x7c7c0000  (temporary)
From 0x7cefb000 to 0x7cefc000  (temporary)
From 0x7cefd000 to 0x7cf02000  (temporary)
From 0x7d04c000 to 0x7d04f000  (temporary)
From 0x7ffdc000 to 0x7ffe0000  (temporary)
Total size: 16429056

***Heap sections:
Total heap size: 827392
Section 0 from 0xea0000 to 0xeb0000 0/16 blacklisted
Section 1 from 0xee0000 to 0xef0000 0/16 blacklisted
Section 2 from 0xf00000 to 0xf10000 0/16 blacklisted
Section 3 from 0xf40000 to 0xf51000 0/17 blacklisted
Section 4 from 0xf60000 to 0xf8b000 1/43 blacklisted
Section 5 from 0xf90000 to 0xfb5000 1/37 blacklisted
Section 6 from 0x12c0000 to 0x12f1000 0/49 blacklisted
Section 7 from 0xe80000 to 0xe88000 0/8 blacklisted

***Free blocks:
Free list 1 (Total size 57344):
	0x12e3000 size 4096 not black listed
	0x12e6000 size 4096 not black listed
	0x12ec000 size 4096 not black listed
	0x12ee000 size 4096 not black listed
	0xea6000 size 4096 not black listed
	0xee0000 size 4096 not black listed
	0xeed000 size 4096 not black listed
	0xf03000 size 4096 not black listed
	0xf41000 size 4096 not black listed
	0xf9f000 size 4096 not black listed
	0xfa2000 size 4096 not black listed
	0xfa8000 size 4096 not black listed
	0xfb2000 size 4096 not black listed
	0x12f0000 size 4096 not black listed
Free list 2 (Total size 8192):
	0x12d0000 size 8192 not black listed
Free list 4 (Total size 16384):
	0xf05000 size 16384 not black listed
Free list 8 (Total size 32768):
	0xe80000 size 32768 not black listed
Total of 114688 bytes on free list

***Blocks in use:
(kind(0=ptrfree,1=normal,2=unc.,3=stubborn):size_in_bytes, #_marks_set)
(0:24,130)(0:24,170)(1:24,170)(0:48,59)(0:64,37)(0:40,62)(0:32,111)(0:312,2)(2:8,514)(0:8,1)(1:24,170)(0:16392,1)(4:16,252)(4:16,256)(0:112,13)(4:24,71)(0:80,51)(4:48,82)(0:96,26)(0:128,25)(4:48,85)(0:112,36)(4:24,170)(0:152,17)(4:16,253)(4:48,85)(0:152,26)(0:128,32)(0:96,40)(4:48,85)(0:112,36)(4:24,170)(0:152,26)(4:48,85)(0:128,32)(0:96,41)(0:152,26)(0:80,51)(4:16,256)(4:48,85)(4:24,170)(0:128,32)(0:112,36)(4:48,85)(4:48,85)(0:128,32)(0:112,36)(4:24,170)(0:96,42)(0:80,51)(6:86024,1)(4:16,256)(4:48,85)(4:48,85)(0:112,36)(4:24,170)(0:96,42)(4:48,85)(0:80,51)(0:96,42)(4:16,256)(1:6096,1)(0:2056,1)(4:48,85)(4:64,1)(4:16,256)(0:176,6)(1:48,4)(4:56,2)(1:24,167)(4:16,247)(4:16,256)(4:16,256)(1:176,2)(0:584,2)(0:2056,1)(4:32,14)(0:112,36)(0:256,4)(0:128,29)(4:24,153)(1:512,2)(1:56,15)(4:40,27)(4:16,252)(0:64,63)(0:96,37)(0:56,66)(1:256,2)(0:152,25)(4:128,32)(1:64,3)(1:32,16)(1:16,40)(0:80,48)(0:48,79)(1:24,168)(1:8,4)(0:24,147)(4:8,30)(0:40,88)(0:32,118)(0:16,88)(0:2052,1)(0:2052,1)(0:2052,1)(1:24,5)(0:96,0)(4:16,85)(4:16,256)(4:16,256)(4:16,256)(4:16,256)(1:24,12)(0:96,1)(4:112,1)(4:48,0)(0:48,10)(4:152,0)(4:256,1)(4:96,5)(1:96,1)(1:8192,1)(1:24,110)(0:24,6)(1:4104,1)(0:4104,1)(0:96,2)(4:512,1)(4:16,215)(4:16,256)(4:16,256)(4:16,256)(4:16,248)(4:16,256)(0:80,15)(0:56,43)(1:152,1)(1:40,3)(0:2048,2)(0:1024,3)(1:24,162)(0:8192,1)(1:24,170)
blocks = 144, bytes = 712704

***Finalization statistics:
1125 finalization table entries; 0 disappearing links
0 objects are eligible for immediate finalization
Complete collection took 4765 msecs
Initiating full world-stop collection 4 after 1744 allocd bytes
--> Marking for collection 4 after 1744 allocd bytes + 0 wasted bytes
Collection 3 finished ---> heapsize = 827392 bytes
World-stopped marking took 4547 msecs
***Static roots:
From 0x10000 to 0x12000  (temporary)
From 0x20000 to 0x21000  (temporary)
From 0x22b000 to 0x22b000  (temporary)
From 0x230000 to 0x247000  (temporary)
From 0x330000 to 0x333000  (temporary)
From 0x828000 to 0x82c000  (temporary)
From 0x82d000 to 0x82e000  (temporary)
From 0x82f000 to 0x830000  (temporary)
From 0x831000 to 0x834000  (temporary)
From 0x83f000 to 0x842000  (temporary)
From 0x843000 to 0x857000  (temporary)
From 0x858000 to 0x8c2000  (temporary)
From 0x961000 to 0x972000  (temporary)
From 0x973000 to 0x97a000  (temporary)
From 0x97d000 to 0x97f000  (temporary)
From 0x981000 to 0x986000  (temporary)
From 0xdd0000 to 0xddb000  (temporary)
From 0xde0000 to 0xde1000  (temporary)
From 0xdf0000 to 0xdf1000  (temporary)
From 0xe00000 to 0xe08000  (temporary)
From 0xe40000 to 0xe41000  (temporary)
From 0x12bf000 to 0x12bf000  (temporary)
From 0x1300000 to 0x1304000  (temporary)
From 0x1310000 to 0x1320000  (temporary)
From 0x1710000 to 0x1718000  (temporary)
From 0x1720000 to 0x1728000  (temporary)
From 0x1820000 to 0x1824000  (temporary)
From 0x1830000 to 0x1831000  (temporary)
From 0x1840000 to 0x1841000  (temporary)
From 0x18c7000 to 0x18c8000  (temporary)
From 0x18c9000 to 0x18cb000  (temporary)
From 0x18d0000 to 0x18d4000  (temporary)
From 0x18f0000 to 0x18f2000  (temporary)
From 0x1900000 to 0x1903000  (temporary)
From 0x1910000 to 0x1918000  (temporary)
From 0x1920000 to 0x1928000  (temporary)
From 0x1a20000 to 0x1a30000  (temporary)
From 0x1c2f000 to 0x1c30000  (temporary)
From 0x1c40000 to 0x1c7c000  (temporary)
From 0x1d40000 to 0x1d41000  (temporary)
From 0x1d50000 to 0x2446000  (temporary)
From 0x2450000 to 0x2b46000  (temporary)
From 0x2b50000 to 0x2b52000  (temporary)
From 0x2bb0000 to 0x2bb4000  (temporary)
From 0x61dc000 to 0x61dd000  (temporary)
From 0x61de000 to 0x61e2000  (temporary)
From 0x10044000 to 0x10049000  (temporary)
From 0x63076000 to 0x63078000  (temporary)
From 0x6307a000 to 0x6307d000  (temporary)
From 0x66684000 to 0x66685000  (temporary)
From 0x66687000 to 0x66689000  (temporary)
From 0x6668b000 to 0x6668d000  (temporary)
From 0x6ca65000 to 0x6ca66000  (temporary)
From 0x6e423000 to 0x6e424000  (temporary)
From 0x70acc000 to 0x70ace000  (temporary)
From 0x70e6b000 to 0x70e6e000  (temporary)
From 0x71770000 to 0x71771000  (temporary)
From 0x728a3000 to 0x728a4000  (temporary)
From 0x75025000 to 0x75026000  (temporary)
From 0x75041000 to 0x75042000  (temporary)
From 0x75e73000 to 0x75e74000  (temporary)
From 0x76b5b000 to 0x76b5c000  (temporary)
From 0x7743e000 to 0x7743f000  (temporary)
From 0x77a3c000 to 0x77a43000  (temporary)
From 0x77d98000 to 0x77d9a000  (temporary)
From 0x77e63000 to 0x77e64000  (temporary)
From 0x77f78000 to 0x77f79000  (temporary)
From 0x77fce000 to 0x77fd1000  (temporary)
From 0x7803a000 to 0x7803c000  (temporary)
From 0x7803e000 to 0x78041000  (temporary)
From 0x7c32d000 to 0x7c32e000  (temporary)
From 0x7c34c000 to 0x7c34d000  (temporary)
From 0x7c5cb000 to 0x7c5cf000  (temporary)
From 0x7c7bf000 to 0x7c7c0000  (temporary)
From 0x7cefb000 to 0x7cefc000  (temporary)
From 0x7cefd000 to 0x7cf02000  (temporary)
From 0x7d04c000 to 0x7d04f000  (temporary)
From 0x7ffdc000 to 0x7ffe0000  (temporary)
Total size: 16429056

***Heap sections:
Total heap size: 827392
Section 0 from 0xea0000 to 0xeb0000 0/16 blacklisted
Section 1 from 0xee0000 to 0xef0000 0/16 blacklisted
Section 2 from 0xf00000 to 0xf10000 0/16 blacklisted
Section 3 from 0xf40000 to 0xf51000 0/17 blacklisted
Section 4 from 0xf60000 to 0xf8b000 1/43 blacklisted
Section 5 from 0xf90000 to 0xfb5000 1/37 blacklisted
Section 6 from 0x12c0000 to 0x12f1000 0/49 blacklisted
Section 7 from 0xe80000 to 0xe88000 0/8 blacklisted

***Free blocks:
Free list 1 (Total size 49152):
	0x12e3000 size 4096 not black listed
	0x12e6000 size 4096 not black listed
	0xea6000 size 4096 not black listed
	0xee0000 size 4096 not black listed
	0xeed000 size 4096 not black listed
	0xf03000 size 4096 not black listed
	0xf41000 size 4096 not black listed
	0xf9f000 size 4096 not black listed
	0xfa2000 size 4096 not black listed
	0xfa8000 size 4096 not black listed
	0xfb2000 size 4096 not black listed
	0x12f0000 size 4096 not black listed
Free list 2 (Total size 8192):
	0x12d0000 size 8192 not black listed
Free list 3 (Total size 12288):
	0x12ec000 size 12288 not black listed
Free list 4 (Total size 16384):
	0xf05000 size 16384 not black listed
Free list 8 (Total size 32768):
	0xe80000 size 32768 not black listed
Total of 118784 bytes on free list

***Blocks in use:
(kind(0=ptrfree,1=normal,2=unc.,3=stubborn):size_in_bytes, #_marks_set)
(0:24,130)(0:24,170)(1:24,170)(0:48,59)(0:64,37)(0:40,62)(0:32,111)(0:312,2)(2:8,514)(0:8,1)(1:24,170)(0:16392,1)(4:16,252)(4:16,256)(0:112,13)(4:24,71)(0:80,51)(4:48,82)(0:96,26)(0:128,25)(4:48,85)(0:112,36)(4:24,170)(0:152,17)(4:16,253)(4:48,85)(0:152,26)(0:128,32)(0:96,40)(4:48,85)(0:112,36)(4:24,170)(0:152,26)(4:48,85)(0:128,32)(0:96,41)(0:152,26)(0:80,51)(4:16,256)(4:48,85)(4:24,170)(0:128,32)(0:112,36)(4:48,85)(4:48,85)(0:128,32)(0:112,36)(4:24,170)(0:96,42)(0:80,51)(6:86024,1)(4:16,256)(4:48,85)(4:48,85)(0:112,36)(4:24,170)(0:96,42)(4:48,85)(0:80,51)(0:96,42)(4:16,256)(1:6096,1)(0:2056,1)(4:48,85)(4:64,1)(4:16,256)(0:176,6)(1:48,4)(4:56,2)(1:24,167)(4:16,247)(4:16,256)(4:16,256)(1:176,2)(0:584,2)(0:2056,1)(4:32,14)(0:112,36)(0:256,4)(0:128,29)(4:24,153)(1:512,2)(1:56,15)(4:40,27)(4:16,252)(0:64,63)(0:96,37)(0:56,66)(1:256,2)(0:152,25)(4:128,32)(1:64,3)(1:32,16)(1:16,40)(0:80,48)(0:48,79)(1:24,168)(1:8,4)(0:24,147)(4:8,30)(0:40,88)(0:32,118)(0:16,88)(0:2052,1)(0:2052,1)(0:2052,1)(1:24,5)(4:16,85)(4:16,256)(4:16,256)(4:16,256)(4:16,256)(1:24,10)(0:96,1)(4:112,1)(4:48,0)(0:48,10)(4:152,0)(4:256,1)(4:96,5)(1:96,1)(1:8192,1)(1:24,112)(0:24,6)(1:4104,1)(0:4104,1)(0:96,2)(4:512,1)(4:16,215)(4:16,256)(4:16,256)(4:16,256)(4:16,248)(4:16,256)(0:80,15)(0:56,43)(1:152,1)(1:40,3)(0:2048,2)(0:1024,3)(1:24,162)(0:8192,1)(1:24,170)
blocks = 143, bytes = 708608

***Finalization statistics:
1125 finalization table entries; 0 disappearing links
0 objects are eligible for immediate finalization
Complete collection took 4750 msecs
Initiating full world-stop collection 5 after 1840 allocd bytes
--> Marking for collection 5 after 1840 allocd bytes + 0 wasted bytes
Collection 4 finished ---> heapsize = 827392 bytes
World-stopped marking took 4531 msecs
***Static roots:
From 0x10000 to 0x12000  (temporary)
From 0x20000 to 0x21000  (temporary)
From 0x22b000 to 0x22b000  (temporary)
From 0x230000 to 0x247000  (temporary)
From 0x330000 to 0x333000  (temporary)
From 0x828000 to 0x82c000  (temporary)
From 0x82d000 to 0x82e000  (temporary)
From 0x82f000 to 0x830000  (temporary)
From 0x831000 to 0x834000  (temporary)
From 0x83f000 to 0x842000  (temporary)
From 0x843000 to 0x857000  (temporary)
From 0x858000 to 0x8c2000  (temporary)
From 0x961000 to 0x972000  (temporary)
From 0x973000 to 0x97a000  (temporary)
From 0x97d000 to 0x97f000  (temporary)
From 0x981000 to 0x986000  (temporary)
From 0xdd0000 to 0xddb000  (temporary)
From 0xde0000 to 0xde1000  (temporary)
From 0xdf0000 to 0xdf1000  (temporary)
From 0xe00000 to 0xe08000  (temporary)
From 0xe40000 to 0xe41000  (temporary)
From 0x12bf000 to 0x12bf000  (temporary)
From 0x1300000 to 0x1304000  (temporary)
From 0x1310000 to 0x1320000  (temporary)
From 0x1710000 to 0x1718000  (temporary)
From 0x1720000 to 0x1728000  (temporary)
From 0x1820000 to 0x1824000  (temporary)
From 0x1830000 to 0x1831000  (temporary)
From 0x1840000 to 0x1841000  (temporary)
From 0x18c7000 to 0x18c8000  (temporary)
From 0x18c9000 to 0x18cb000  (temporary)
From 0x18d0000 to 0x18d4000  (temporary)
From 0x18f0000 to 0x18f2000  (temporary)
From 0x1900000 to 0x1903000  (temporary)
From 0x1910000 to 0x1918000  (temporary)
From 0x1920000 to 0x1928000  (temporary)
From 0x1a20000 to 0x1a30000  (temporary)
From 0x1c2f000 to 0x1c30000  (temporary)
From 0x1c40000 to 0x1c7c000  (temporary)
From 0x1d40000 to 0x1d41000  (temporary)
From 0x1d50000 to 0x2446000  (temporary)
From 0x2450000 to 0x2b46000  (temporary)
From 0x2b50000 to 0x2b52000  (temporary)
From 0x2bb0000 to 0x2bb4000  (temporary)
From 0x61dc000 to 0x61dd000  (temporary)
From 0x61de000 to 0x61e2000  (temporary)
From 0x10044000 to 0x10049000  (temporary)
From 0x63076000 to 0x63078000  (temporary)
From 0x6307a000 to 0x6307d000  (temporary)
From 0x66684000 to 0x66685000  (temporary)
From 0x66687000 to 0x66689000  (temporary)
From 0x6668b000 to 0x6668d000  (temporary)
From 0x6ca65000 to 0x6ca66000  (temporary)
From 0x6e423000 to 0x6e424000  (temporary)
From 0x70acc000 to 0x70ace000  (temporary)
From 0x70e6b000 to 0x70e6e000  (temporary)
From 0x71770000 to 0x71771000  (temporary)
From 0x728a3000 to 0x728a4000  (temporary)
From 0x75025000 to 0x75026000  (temporary)
From 0x75041000 to 0x75042000  (temporary)
From 0x75e73000 to 0x75e74000  (temporary)
From 0x76b5b000 to 0x76b5c000  (temporary)
From 0x7743e000 to 0x7743f000  (temporary)
From 0x77a3c000 to 0x77a43000  (temporary)
From 0x77d98000 to 0x77d9a000  (temporary)
From 0x77e63000 to 0x77e64000  (temporary)
From 0x77f78000 to 0x77f79000  (temporary)
From 0x77fce000 to 0x77fd1000  (temporary)
From 0x7803a000 to 0x7803c000  (temporary)
From 0x7803e000 to 0x78041000  (temporary)
From 0x7c32d000 to 0x7c32e000  (temporary)
From 0x7c34c000 to 0x7c34d000  (temporary)
From 0x7c5cb000 to 0x7c5cf000  (temporary)
From 0x7c7bf000 to 0x7c7c0000  (temporary)
From 0x7cefb000 to 0x7cefc000  (temporary)
From 0x7cefd000 to 0x7cf02000  (temporary)
From 0x7d04c000 to 0x7d04f000  (temporary)
From 0x7ffdc000 to 0x7ffe0000  (temporary)
Total size: 16429056

***Heap sections:
Total heap size: 827392
Section 0 from 0xea0000 to 0xeb0000 0/16 blacklisted
Section 1 from 0xee0000 to 0xef0000 0/16 blacklisted
Section 2 from 0xf00000 to 0xf10000 0/16 blacklisted
Section 3 from 0xf40000 to 0xf51000 0/17 blacklisted
Section 4 from 0xf60000 to 0xf8b000 1/43 blacklisted
Section 5 from 0xf90000 to 0xfb5000 1/37 blacklisted
Section 6 from 0x12c0000 to 0x12f1000 0/49 blacklisted
Section 7 from 0xe80000 to 0xe88000 0/8 blacklisted

***Free blocks:
Free list 1 (Total size 49152):
	0x12e3000 size 4096 not black listed
	0x12e6000 size 4096 not black listed
	0xea6000 size 4096 not black listed
	0xee0000 size 4096 not black listed
	0xeed000 size 4096 not black listed
	0xf03000 size 4096 not black listed
	0xf41000 size 4096 not black listed
	0xf9f000 size 4096 not black listed
	0xfa2000 size 4096 not black listed
	0xfa8000 size 4096 not black listed
	0xfb2000 size 4096 not black listed
	0x12f0000 size 4096 not black listed
Free list 2 (Total size 8192):
	0x12d0000 size 8192 not black listed
Free list 3 (Total size 12288):
	0x12ec000 size 12288 not black listed
Free list 4 (Total size 16384):
	0xf05000 size 16384 not black listed
Free list 8 (Total size 32768):
	0xe80000 size 32768 not black listed
Total of 118784 bytes on free list

***Blocks in use:
(kind(0=ptrfree,1=normal,2=unc.,3=stubborn):size_in_bytes, #_marks_set)
(0:24,130)(0:24,170)(1:24,170)(0:48,59)(0:64,37)(0:40,62)(0:32,111)(0:312,2)(2:8,514)(0:8,1)(1:24,170)(0:16392,1)(4:16,252)(4:16,256)(0:112,13)(4:24,71)(0:80,51)(4:48,82)(0:96,26)(0:128,25)(4:48,85)(0:112,36)(4:24,170)(0:152,17)(4:16,253)(4:48,85)(0:152,26)(0:128,32)(0:96,40)(4:48,85)(0:112,36)(4:24,170)(0:152,26)(4:48,85)(0:128,32)(0:96,41)(0:152,26)(0:80,51)(4:16,256)(4:48,85)(4:24,170)(0:128,32)(0:112,36)(4:48,85)(4:48,85)(0:128,32)(0:112,36)(4:24,170)(0:96,42)(0:80,51)(6:86024,1)(4:16,256)(4:48,85)(4:48,85)(0:112,36)(4:24,170)(0:96,42)(4:48,85)(0:80,51)(0:96,42)(4:16,256)(1:6096,1)(0:2056,1)(4:48,85)(4:64,1)(4:16,256)(0:176,6)(1:48,4)(4:56,2)(1:24,167)(4:16,247)(4:16,256)(4:16,256)(1:176,2)(0:584,2)(0:2056,1)(4:32,14)(0:112,36)(0:256,4)(0:128,29)(4:24,153)(1:512,2)(1:56,15)(4:40,27)(4:16,252)(0:64,63)(0:96,37)(0:56,66)(1:256,2)(0:152,25)(4:128,32)(1:64,3)(1:32,16)(1:16,40)(0:80,48)(0:48,79)(1:24,168)(1:8,4)(0:24,147)(4:8,30)(0:40,88)(0:32,118)(0:16,88)(0:2052,1)(0:2052,1)(0:2052,1)(1:24,5)(4:16,85)(4:16,256)(4:16,256)(4:16,256)(4:16,256)(1:24,10)(0:96,1)(4:112,1)(4:48,0)(0:48,10)(4:152,0)(4:256,1)(4:96,5)(1:96,1)(1:8192,1)(1:24,112)(0:24,6)(1:4104,1)(0:4104,1)(0:96,2)(4:512,1)(4:16,215)(4:16,256)(4:16,256)(4:16,256)(4:16,248)(4:16,256)(0:80,15)(0:56,43)(1:152,1)(1:40,3)(0:2048,2)(0:1024,3)(1:24,162)(0:8192,1)(1:24,170)
blocks = 143, bytes = 708608

***Finalization statistics:
1125 finalization table entries; 0 disappearing links
0 objects are eligible for immediate finalization
Complete collection took 4797 msecs

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: garbage collection take too much time to execute....
  2008-06-17 21:44   ` - -
@ 2008-06-18  5:39     ` Hans Boehm
  0 siblings, 0 replies; 7+ messages in thread
From: Hans Boehm @ 2008-06-18  5:39 UTC (permalink / raw)
  To: - -; +Cc: java, Boehm, Hans

This looks weird to me.  I don't see anything in the log that suggests 
where the time is going.  There are about 16MB of roots, which is slightly 
suspicious, but not enough to easily explain more than at most 100msecs or 
so of tracing time on a modern machine.

If I were debugging this, I'd interrupt execution at a few random points 
during GC and see what it's doing.  It's still conceivable that it's 
tracing some extra memory, and that memory is somehow very slow to access, 
e.g. because it's mapped to some peripheral.  But this looks different 
from what I remember.

It would still be good to know whether this happens with newer versions.

Hans

  On Tue, 17 Jun 2008, - - wrote:

> Hi,
> I run the program with both environment variables set to 1.
> Previous I run with just one single variable set.
>
> export GC_DUMP_REGULARLY=1
> export GC_PRINT_STATS=1
>
> As you can see, the first time when button is pushed
> the output is about 12 seconds!!! .
> Next the run is about 5 seconds....
>
> I'll try to setup a compiler environment with more recent release of gcj and come back with results.
>
> In the mean time I tried to understand the output of code but I'm a novice and need help.
>
>
> $ snippet.exe
> paintControl()
> widgetSelected()
> start
> Elapsed milliseconds: 11921
> end
> paintControl()
> widgetSelected()
> start
> Elapsed milliseconds: 4765
> end
> paintControl()
> widgetSelected()
> start
> Elapsed milliseconds: 4750
> end
> paintControl()
> widgetSelected()
> start
> Elapsed milliseconds: 4812
> end
> paintControl()
>
>
>
> thanks
> x10.
>
>
>
>
> --- On Tue, 6/17/08, Boehm, Hans  wrote:
>
>> From: Boehm, Hans <hans.boehm@hp.com>
>> Subject: RE: garbage collection take too much time to execute....
>
>> Date: Tuesday, June 17, 2008, 7:51 PM
>> Did you try with a recent version of gcj?
>>
>> In the past, there have been problems with the collector
>> looking for pointers in graphics memory.  You can try
>> running the program with the GC_DUMP_REGULARLY environment
>> variable set, and look at the size of the root sets.  If it
>> appears to include your graphics memory, then that's
>> probably the issue.
>>
>> If not, GC_PRINT_STATS output might be helpful.
>>
>> Hans
>>
>>> -----Original Message-----
>>> On Behalf Of - -
>>> Sent: Tuesday, June 17, 2008 8:23 AM
>>> Subject: garbage collection take too much time to
>> execute....
>>>
>>>
>>> Hi,
>>> I found a strange behaviour on code generated by gcj
>> when
>>> compare its output with code generated by eclipse.
>>>
>>> Mainly the code generated by gcj  take too much time
>> to
>>> perform a memory  garbage collection (about 5 seconds)
>>> instead of only 15 milliseconds of byte code generated
>> by eclipse.
>>>
>>> The problem seems to happens when there are canvas and
>>> transform operations. I attach a simple snippet code
>> that
>>> write a vertical text on canvas in order to reproduce
>> the behaviour.
>>>
>>> The gcj compiler I use is:
>>> $ gcj --version
>>> gcj.exe (GCC) 3.4.5 (mingw-vista special r3) Copyright
>> (C)
>>> 2004 Free Software Foundation, Inc.
>>> This is free software; see the source for copying
>> conditions.
>>>  There is NO warranty; not even for MERCHANTABILITY or
>>> FITNESS FOR A PARTICULAR PURPOSE.
>>>
>>> with the swt version 3349:
>> "swt-gdip-win32-3349.dll"  and
>>> "swt-win32-3349.dll"
>>>
>>> I'm new of this discussion list, hoping not annoy
>> you. It is
>>> a trouble or it is just a mistake on usage of
>> transform?
>>> thanks you,
>>>
>>> x10
>>>
>>
>
>
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: garbage collection take too much time to execute....
  2008-06-17 15:23 garbage collection take too much time to execute - -
  2008-06-17 17:53 ` Boehm, Hans
@ 2008-06-18 10:37 ` Andrew Haley
  2008-06-18 13:34   ` - -
  1 sibling, 1 reply; 7+ messages in thread
From: Andrew Haley @ 2008-06-18 10:37 UTC (permalink / raw)
  To: decuplo; +Cc: java

- - wrote:
> Hi,
> I found a strange behaviour on code generated by gcj when compare its output with code generated by eclipse.
> 
> Mainly the code generated by gcj  take too much time to  perform a memory  garbage collection (about 5 seconds) instead of only 15 milliseconds of byte code generated by eclipse.
> 
> The problem seems to happens when there are canvas and transform operations. I attach a simple snippet code that write a vertical text on canvas in order to reproduce the behaviour.
> 
> The gcj compiler I use is:
> $ gcj --version
> gcj.exe (GCC) 3.4.5 (mingw-vista special r3)
> Copyright (C) 2004 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>  
> with the swt version 3349:  "swt-gdip-win32-3349.dll"  and  "swt-win32-3349.dll"
>  
> I'm new of this discussion list, hoping not annoy you. It is a trouble or it is just a mistake on usage of transform?
> thanks you,

I addition to what Hans said, I have to tell you that gcj 3.4.x is so old
that it's very unlikely that anyone will want to fix any problems.

Andrew.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: garbage collection take too much time to execute....
  2008-06-18 10:37 ` Andrew Haley
@ 2008-06-18 13:34   ` - -
  2008-06-18 14:55     ` - -
  0 siblings, 1 reply; 7+ messages in thread
From: - - @ 2008-06-18 13:34 UTC (permalink / raw)
  To: java

I agree that 3.4.5 is old but it is the "current release" of mingw,
also cygwin is using 3.4.5 is its "stable" releases....
As said before I'm not familiary with gcj and mingw and I'd like to
use for now (at least to understand the limitation and boundary of gcj and swt) stable or official releases.

May I ask if someone could compile and run my simple snippet in order to see if in the latest release is present the same problem?
This is the command to compile:

gcj --classpath="org.eclipse.swt.win32.win32.x86_3.3.3.v3349.jar" -I. -c -o snippet.o snippet.java

and after:

gcj -o  snippet.exe  --static -mwindows --main=snippet ./snippet.o -L. -lswt


I'm  trying to donwload the alfa release of mingw it contains gcj release 4.3.0 may be tomorrow I'll success to compile...


Thanks you a lot for any support and hits..
x10


--- On Wed, 6/18/08, Andrew Haley wrote:


> Subject: Re: garbage collection take too much time to execute....


> Date: Wednesday, June 18, 2008, 12:36 PM
> - - wrote:
> > Hi,
> > I found a strange behaviour on code generated by gcj
> when compare its output with code generated by eclipse.
> > 
> > Mainly the code generated by gcj  take too much time
> to  perform a memory  garbage collection (about 5 seconds)
> instead of only 15 milliseconds of byte code generated by
> eclipse.
> > 
> > The problem seems to happens when there are canvas and
> transform operations. I attach a simple snippet code that
> write a vertical text on canvas in order to reproduce the
> behaviour.
> > 
> > The gcj compiler I use is:
> > $ gcj --version
> > gcj.exe (GCC) 3.4.5 (mingw-vista special r3)
> > Copyright (C) 2004 Free Software Foundation, Inc.
> > This is free software; see the source for copying
> conditions.  There is NO
> > warranty; not even for MERCHANTABILITY or FITNESS FOR
> A PARTICULAR PURPOSE.
> >  
> > with the swt version 3349: 
> "swt-gdip-win32-3349.dll"  and 
> "swt-win32-3349.dll"
> >  
> > I'm new of this discussion list, hoping not annoy
> you. It is a trouble or it is just a mistake on usage of
> transform?
> > thanks you,
> 
> I addition to what Hans said, I have to tell you that gcj
> 3.4.x is so old
> that it's very unlikely that anyone will want to fix
> any problems.
> 
> Andrew.


      

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: garbage collection take too much time to execute....
  2008-06-18 13:34   ` - -
@ 2008-06-18 14:55     ` - -
  0 siblings, 0 replies; 7+ messages in thread
From: - - @ 2008-06-18 14:55 UTC (permalink / raw)
  To: java

Hi All again,
I success to build a new compilation environment!! (I took less time I thought)
With the new gcj the problem not happens!!!.

The new compiler I used is:

$ gcj --version
gcj.exe (GCC) 4.3.0 20080305 (alpha-testing) mingw-20080502
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


The snippet's time is about 15 milliseconds now. So the problem is in previous releases but we not know the reason or the patch correcting it.

thanks you a lot for help
x10


--- On Wed, 6/18/08, - - <decuplo> wrote:

> Subject: Re: garbage collection take too much time to execute....

> Date: Wednesday, June 18, 2008, 3:33 PM
> I agree that 3.4.5 is old but it is the "current
> release" of mingw,
> also cygwin is using 3.4.5 is its "stable"
> releases....
> As said before I'm not familiary with gcj and mingw and
> I'd like to
> use for now (at least to understand the limitation and
> boundary of gcj and swt) stable or official releases.
> 
> May I ask if someone could compile and run my simple
> snippet in order to see if in the latest release is present
> the same problem?
> This is the command to compile:
> 
> gcj
> --classpath="org.eclipse.swt.win32.win32.x86_3.3.3.v3349.jar"
> -I. -c -o snippet.o snippet.java
> 
> and after:
> 
> gcj -o  snippet.exe  --static -mwindows --main=snippet
> ./snippet.o -L. -lswt
> 
> 
> I'm  trying to donwload the alfa release of mingw it
> contains gcj release 4.3.0 may be tomorrow I'll success
> to compile...
> 
> 
> Thanks you a lot for any support and hits..
> x10
> 
> 
> --- On Wed, 6/18/08, Andrew Haley wrote:
> 
> 
> > Subject: Re: garbage collection take too much time to
> execute....
> 
> 
> > Date: Wednesday, June 18, 2008, 12:36 PM
> > - - wrote:
> > > Hi,
> > > I found a strange behaviour on code generated by
> gcj
> > when compare its output with code generated by
> eclipse.
> > > 
> > > Mainly the code generated by gcj  take too much
> time
> > to  perform a memory  garbage collection (about 5
> seconds)
> > instead of only 15 milliseconds of byte code generated
> by
> > eclipse.
> > > 
> > > The problem seems to happens when there are
> canvas and
> > transform operations. I attach a simple snippet code
> that
> > write a vertical text on canvas in order to reproduce
> the
> > behaviour.
> > > 
> > > The gcj compiler I use is:
> > > $ gcj --version
> > > gcj.exe (GCC) 3.4.5 (mingw-vista special r3)
> > > Copyright (C) 2004 Free Software Foundation, Inc.
> > > This is free software; see the source for copying
> > conditions.  There is NO
> > > warranty; not even for MERCHANTABILITY or FITNESS
> FOR
> > A PARTICULAR PURPOSE.
> > >  
> > > with the swt version 3349: 
> > "swt-gdip-win32-3349.dll"  and 
> > "swt-win32-3349.dll"
> > >  
> > > I'm new of this discussion list, hoping not
> annoy
> > you. It is a trouble or it is just a mistake on usage
> of
> > transform?
> > > thanks you,
> > 
> > I addition to what Hans said, I have to tell you that
> gcj
> > 3.4.x is so old
> > that it's very unlikely that anyone will want to
> fix
> > any problems.
> > 
> > Andrew.


      

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2008-06-18 14:55 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-06-17 15:23 garbage collection take too much time to execute - -
2008-06-17 17:53 ` Boehm, Hans
2008-06-17 21:44   ` - -
2008-06-18  5:39     ` Hans Boehm
2008-06-18 10:37 ` Andrew Haley
2008-06-18 13:34   ` - -
2008-06-18 14:55     ` - -

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).