Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4374311

Area's intersect method uses excessive memory

XMLWordPrintable

    • 2d
    • sparc
    • solaris_8

      Area's intersect method is computation- and memory-intensive. We have
      seen well over 100MB of memory allocated to intersect a 40000 node
      Shape. This test program will reproduce large memory and CPU
      consumption with either 1.2 or 1.3 VMs.

      Optimizeit output is included at the bottom of this file.
      Files in gifclient/:
        ClipBugExample.java
        ASCIIShapeUtil.java
        shape.txt

      Compile:
        javac gifclient/*.java

      Usage:
        java gifclient.ClipBugExample 400 160 20 10 gifclient/shape.txt

      Output, with details of memory usage:

        % java -verbose:gc -Xmx128m gifclient.ClipBugExample 400 160 20 10 gifclient/shape.txt
        
        [GC 2047K->148K(3520K), 0.0107659 secs]
        [GC 2195K->224K(3520K), 0.0060096 secs]
        [GC 2260K->322K(3520K), 0.0023054 secs]
        [GC 2370K->444K(3520K), 0.0029046 secs]
        [GC 2492K->588K(3520K), 0.0031883 secs]
        [GC 2583K->752K(3520K), 0.0036002 secs]
        [GC 2733K->936K(3520K), 0.0038260 secs]
        [GC 2984K->1138K(3520K), 0.0042750 secs]
        [GC 3186K->1361K(3520K), 0.0042826 secs]
        [GC 3409K->1599K(3760K), 0.0050657 secs]
        [Full GC 3537K->432K(3520K), 0.0379503 secs]
        [GC 2449K->733K(3520K), 0.0021912 secs]
        [GC 2778K->1018K(3520K), 0.0025819 secs]
        [GC 3065K->1318K(3520K), 0.0025774 secs]
        Cubic segments: 0
        Path close Segments: 1296
        Pen Down Segments: 37156
        Pen Up Segments: 1296
        Quadratic segments: 0
        
        [GC 3300K->2977K(5104K), 0.0700558 secs]
        [Full GC 5025K->3734K(7104K), 0.1761301 secs]
        [GC 5039K->4959K(7104K), 0.1527277 secs]
        [GC 7007K->6533K(8664K), 0.0916195 secs]
        [Full GC 8581K->8175K(13608K), 0.3463584 secs]
        [GC 9175K->8990K(13608K), 0.1995273 secs]
        [GC 11614K->11147K(13864K), 0.1412061 secs]
        [Full GC 13771K->13226K(23304K), 0.6868031 secs]
        [GC 15783K->15318K(23304K), 0.3574240 secs]
        [GC 19926K->19093K(23816K), 0.2360417 secs]
        [Full GC 23701K->22880K(39848K), 0.8804036 secs]
        [GC 27015K->26277K(39848K), 0.6208483 secs]
        [GC 34149K->32724K(40616K), 0.4085534 secs]
        [Full GC 40596K->39202K(67976K), 1.4874448 secs]
        [GC 45991K->44787K(67976K), 1.0870247 secs]
        [GC 58099K->55605K(69000K), 0.6820299 secs]
        [Full GC 68917K->66450K(115344K), 2.5816931 secs]
        [GC 78023K->75894K(115344K), 1.8344380 secs]
        {tpg@surprise:173} java -version
        java version "1.3.0"
        Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0)
        Java HotSpot(TM) Client VM (build 1.3.0, mixed mode)

      % java -version
      java version "1.3.0"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0)
      Java HotSpot(TM) Client VM (build 1.3.0, mixed mode)

      % swap -s
      total: 132848k bytes allocated + 23736k reserved = 156584k used, 760184k available

      % prtconf | grep -i mega
      Memory size: 512 Megabytes

      % uname -srvmpi
      SunOS 5.8 Generic sun4u sparc SUNW,Ultra-5_10
      ==============================================

      Heap dump at end of a Run with a 128MB heap,
      from Optimizeit, running with 1.2.2 Reference JVM:

      Current heap of application gifclient.ClipBugExample
      ----------------------------------------------------

      Class name Instance count Difference
      --------------------------------- -------------- ----------
      sun.awt.geom.CurveLink 2000712 + 1217282
      sun.awt.geom.Order1 76760 + 38379
      sun.awt.geom.Edge 76760 + 38381
      sun.awt.geom.Order0 2565 + 1268
      Object[] 31 - 622
      java.lang.Class 31 + 2
      char[] 12 None
      java.util.Vector 12 + 5
      java.lang.String 9 None
      double[] 6 + 1
      int[] 4 None
      java.util.Vector$1 3 + 3
      java.io.FileDescriptor 2 None
      java.awt.geom.Area 2 None
      float[] 2 None
      java.lang.ref.Finalizer 2 None
      java.io.FileInputStream 2 None
      java.awt.geom.GeneralPathIterator 1 None
      sun.awt.geom.AreaOp$IntOp 1 + 1
      long[] 1 None
      java.lang.ClassNotFoundException 1 None
      sun.awt.geom.AreaOp$1 1 None
      java.awt.geom.Rectangle2D$Double 1 None
      sun.awt.geom.AreaOp$NZWindOp 1 None
      byte[] 1 None
      java.awt.geom.GeneralPath 1 None

            flar Jim Graham
            tgould Tom Gould (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: