harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ivan Volosyuk (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-1984) [drlvm][gc] GC allocation: overhead of block store is too high
Date Tue, 28 Nov 2006 16:26:23 GMT
    [ 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

        

Mime
View raw message