Author: allain.lalonde
Date: Fri Jul 17 14:24:34 2009
New Revision: 492

Modified:
     
piccolo2d.java/trunk/examples/src/main/java/edu/umd/cs/piccolo/examples/pswing/PSwingMemoryLeakExample.java

Log:
Adding # of times finalizers are called.

Modified:  
piccolo2d.java/trunk/examples/src/main/java/edu/umd/cs/piccolo/examples/pswing/PSwingMemoryLeakExample.java
==============================================================================
---  
piccolo2d.java/trunk/examples/src/main/java/edu/umd/cs/piccolo/examples/pswing/PSwingMemoryLeakExample.java
      
(original)
+++  
piccolo2d.java/trunk/examples/src/main/java/edu/umd/cs/piccolo/examples/pswing/PSwingMemoryLeakExample.java
      
Fri Jul 17 14:24:34 2009
@@ -57,9 +57,13 @@
      /** Default serial version UID. */
      private static final long serialVersionUID = 1L;

-    /** Counter. */
-    private final PText counter;
+    /** Active Instances Counter. */
+    private final PText activeInstanceCounter;

+    /** Garbage Collected Counter. */
+    private final PText gcInstanceCounter;
+
+
      /** Memory. */
      private final PText freeMemory;

@@ -83,7 +87,9 @@
          super("PSwing memory leak example");

          PText label0 = new PText("Number of active PSwingCanvases:");
-        counter = new PText("0");
+        activeInstanceCounter = new PText("0");
+        PText label4 = new PText("Number of finalized PSwingCanvases:");
+        gcInstanceCounter = new PText("0");
          PText label1 = new PText("Total memory:");
          totalMemory = new PText("0");
          PText label2 = new PText("Free memory:");
@@ -92,17 +98,21 @@
          usedMemory = new PText("0");

          label0.offset(20.0d, 20.0d);
-        counter.offset(label0.getFullBounds().getWidth() + 40.0d, 20.0d);
-        label1.offset(20.0d, 40.0d);
-        totalMemory.offset(label1.getFullBounds().getWidth() + 40.0d,  
40.0d);
-        label2.offset(20.0d, 60.0d);
-        freeMemory.offset(label2.getFullBounds().getWidth() + 40.0d,  
60.0d);
-        label3.offset(freeMemory.getFullBounds().getX() + 80.0d, 60.0d);
-        usedMemory.offset(label3.getFullBounds().getX() +  
label3.getFullBounds().getWidth() + 20.0d, 60.0d);
+        activeInstanceCounter.offset(label0.getFullBounds().getWidth() +  
50.0d, 20.0d);
+        label4.offset(20.0d, 40.0d);
+        gcInstanceCounter.offset(label4.getFullBounds().getWidth() +  
50.0d, 40.0d);
+        label1.offset(20.0d, 60.0d);
+        totalMemory.offset(label1.getFullBounds().getWidth() + 40.0d,  
60.0d);
+        label2.offset(20.0d, 80.0d);
+        freeMemory.offset(label2.getFullBounds().getWidth() + 40.0d,  
80.0d);
+        label3.offset(freeMemory.getFullBounds().getX() + 80.0d, 80.0d);
+        usedMemory.offset(label3.getFullBounds().getX() +  
label3.getFullBounds().getWidth() + 20.0d, 80.0d);

          canvas = new PCanvas();
          canvas.getCamera().addChild(label0);
-        canvas.getCamera().addChild(counter);
+        canvas.getCamera().addChild(activeInstanceCounter);
+        canvas.getCamera().addChild(label4);
+        canvas.getCamera().addChild(gcInstanceCounter);
          canvas.getCamera().addChild(label1);
          canvas.getCamera().addChild(totalMemory);
          canvas.getCamera().addChild(label2);
@@ -119,7 +129,7 @@
          getContentPane().add("North", canvas);
          getContentPane().add("Center", mainPanel);

-        final Timer add = new Timer(250, new ActionListener()
+        final Timer add = new Timer(10, new ActionListener()
          {
              int id = 0;

@@ -127,7 +137,11 @@
              public void actionPerformed(final ActionEvent e) {
                  JLabel label = new JLabel("Label" + id);
                  PSwing pswing = new PSwing(label);
-                PSwingCanvas pswingCanvas = new PSwingCanvas();
+                PSwingCanvas pswingCanvas = new PSwingCanvas() {
+                    public void finalize() {
+                         
gcInstanceCounter.setText(String.valueOf(Integer.parseInt(gcInstanceCounter.getText())+1));
+                    }
+                };
                  pswingCanvas.getLayer().addChild(pswing);
                  pswingCanvas.setPreferredSize(new Dimension(60, 18));
                  mainPanel.add(pswingCanvas);
@@ -156,6 +170,9 @@
                      mainPanel.validate();
                      mainPanel.repaint();
                      decrementCounter();
+
+                    System.gc();
+                    System.runFinalization();
                  }
              }
          });
@@ -185,18 +202,18 @@
       * Increment counter.
       */
      private void incrementCounter() {
-        int count = Integer.parseInt(counter.getText());
+        int count = Integer.parseInt(activeInstanceCounter.getText());
          count++;
-        counter.setText(String.valueOf(count));
+        activeInstanceCounter.setText(String.valueOf(count));
      }

      /**
       * Decrement counter.
       */
      private void decrementCounter() {
-        int count = Integer.parseInt(counter.getText());
+        int count = Integer.parseInt(activeInstanceCounter.getText());
          count--;
-        counter.setText(String.valueOf(count));
+        activeInstanceCounter.setText(String.valueOf(count));
      }

      /**

--~--~---------~--~----~------------~-------~--~----~
Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to