You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Ivan Volosyuk (JIRA)" <ji...@apache.org> on 2006/11/28 17:26:23 UTC

[jira] Commented: (HARMONY-1984) [drlvm][gc] GC allocation: overhead of block store is too high

    [ http://issues.apache.org/jira/browse/HARMONY-1984?page=comments#action_12453998 ] 
            
Ivan Volosyuk commented on HARMONY-1984:
----------------------------------------

AFAIU, the test is for GCv4. GCv4.1 doesn't use block store and the associated overhead.

The test still can fail on GCv41. The GC will throw OutOfMemoryError if there is less then 15% of free memory available in java heap after full heap compaction. I would like to keep this optimization, as full heap compactions are quite expensive (GCv41 will completely merge _all_ free space) and the working conditions are extremely inefficient. Users should increase heap size in this case.

> [drlvm][gc] GC allocation: overhead of block store is too high
> --------------------------------------------------------------
>
>                 Key: HARMONY-1984
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1984
>             Project: Harmony
>          Issue Type: Improvement
>          Components: DRLVM
>         Environment: Windows XP, P4 3000HT
>            Reporter: Alexander D Shipilov
>            Priority: Minor
>         Attachments: GCAllocationOverheadzip.zip
>
>
> Not a bug, compatibility issue.
> Test description:
>  Run class which allocates 128M array by several bytes arrays of different sizes with initial heap size (-Xmx option) 130M. Check if OutOfMemoryError not thrown.
> That's a compatibility issue - RI passes this test.
> Steps for reproducing:
> Unzip attached file. It contains sources and classes of test.
> If you like to re-compile test, use command in cygwin:
> $ find dir -name "*.java"|xargs javac
> where dir - is a directory of test (org e.g.)
> To run test in cycle use command:
> $ ./java -classpath "./;./junit.jar;" -Xmx130m -Dorg.apache.harmony.test.share.stress.ReliabilityRunner.params="org.apache.harmony.test.stress.gc.mem.MemoryTest4.MemoryTest {}" org.apache.harmony.test.share.stress.ReliabilityRunner
> where ./java - is a tested jvm (harmony), ./junit.jar; - is a full path to the junit.jar
> Result on RI:
> $ java -classpath "./;./junit.jar;" -Xmx130m -Dorg.apache.harmony.test.share.st
> ress.ReliabilityRunner.params="org.apache.harmony.test.stress.gc.mem.MemoryTest
> 4.MemoryTest {}" org.apache.harmony.test.share.stress.ReliabilityRunner
> [debug] started null(org.apache.harmony.test.share.stress.ReliabilityRunner)
> [debug] timeToWork = 100, timeToAbort = 600
> [debug] started null(org.apache.harmony.test.share.stress.generator.Thread)
> [debug] Thread.setContext { org.apache.harmony.test.stress.gc.mem.MemoryTest4.
> emoryTest {} }
> [debug] Starting 1 threads
> [debug] completed null(org.apache.harmony.test.share.stress.generator.Thread)
> [debug] ThreadToRun.run()
> [debug] Generator.execute()
> [debug] class = org.apache.harmony.test.stress.gc.mem.MemoryTest4.MemoryTest
> [debug] org.apache.harmony.test.stress.gc.mem.MemoryTest4.MemoryTest { }
> [debug] started test(org.apache.harmony.test.stress.gc.mem.MemoryTest4.MemoryTe
> t)
> [debug] completed test(org.apache.harmony.test.stress.gc.mem.MemoryTest4.Memory
> est)
> [debug] Tests completed greacefully
> [debug] completed null(org.apache.harmony.test.share.stress.ReliabilityRunner)
> [debug] TimeKeeper is interrupted
> [debug] Test passed, time = 860
> Result on Harmony:
> $ ./java -classpath "./;./junit.jar;" -Xmx130m -Dorg.apache.harmony.test.share.
> stress.ReliabilityRunner.params="org.apache.harmony.test.stress.gc.mem.MemoryTe
> st4.MemoryTest {}" org.apache.harmony.test.share.stress.ReliabilityRunner
> [debug] started null(org.apache.harmony.test.share.stress.ReliabilityRunner)
> [debug] timeToWork = 100, timeToAbort = 600
> [debug] started null(org.apache.harmony.test.share.stress.generator.Thread)
> [debug] Thread.setContext { org.apache.harmony.test.stress.gc.mem.MemoryTest4.M
> emoryTest {} }
> [debug] Starting 1 threads
> [debug] completed null(org.apache.harmony.test.share.stress.generator.Thread)
> [debug] ThreadToRun.run()
> [debug] Generator.execute()
> [debug] class = org.apache.harmony.test.stress.gc.mem.MemoryTest4.MemoryTest
> [debug] org.apache.harmony.test.stress.gc.mem.MemoryTest4.MemoryTest { }
> [debug] started test(org.apache.harmony.test.stress.gc.mem.MemoryTest4.MemoryTes
> t)
> [debug] OutOfMemoryError is thrown on iteration 1015. Total size = 133169152
> [error] in test(org.apache.harmony.test.stress.gc.mem.MemoryTest4.MemoryTest)
> java.lang.OutOfMemoryError
> <no stack trace available>
> Harmony version:
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = r467316, (Oct 27 2006), Windows/ia32/msvc 1310, release build
> http://incubator.apache.org/harmony

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira