RFR 8015391: NPG: With -XX:+UseCompressedKlassPointers OOME due to exhausted metadat, a space could occur when metaspace is almost empty
Jon Masamitsu
jon.masamitsu at oracle.com
Mon Jun 24 10:46:08 PDT 2013
http://cr.openjdk.java.net/~coleenp/8015391/src/share/vm/memory/metaspace.cpp.frames.html
> 2673 size_t specialized_count = 0, small_count = 0, medium_count = 0, large_count = 0;
> 2675 size_t cls_specialized_count = 0, cls_small_count = 0, cls_medium_count = 0, cls_large_count = 0;
Not introduced by your change but
humongous_count instead of large_count
and
cls_humongous_count instead of cls_large_count
would be more consistent.
http://cr.openjdk.java.net/~coleenp/8015391/src/share/vm/classfile/classLoaderData.cpp.frames.html
I'd suggest adding Metaspace::AppClassMetaspaceType
> 385 } else if (SystemDictionary::is_app_class_loader(class_loader())) {
> 386 if (TraceClassLoaderData && Verbose && class_loader() != NULL) {
> 387 tty->print_cr("sun/misc/Launcher$AppClassLoader class loader");
> 388 }
> 389 set_metaspace(new Metaspace(_metaspace_lock, Metaspace::BootMetaspaceType));
and adding a flag InitialAppClassLoaderMetaspaceSize. It's not obvious
to me
that we should always be reserving the same amount of space for the
AppClassLoader
as the BootClassLoader. The same default is OK with me.
Rest looks good.
Jon
On 6/20/13 9:26 AM, Coleen Phillimore wrote:
> Summary: Allocate medium chunks for class metaspace when class loader
> has lots of classes
>
> I originally made class metaspace keep small chunks and not start
> allocating from medium chunks, because I thought with only Klass
> objects, small chunks is enough. This test has a large set of class
> loaders who have a lot of classes, so allocated thousands of small
> chunks each. Class loaders with that many classes should start
> allocating from medium chunks, for class metaspace.
>
> I also increased the ClassMediumChunk size to 4k and measured a lot
> less fragmentation waste than 1K or 2K for this test. Lastly, the
> AppClassLoader instance should have as large of an initial metaspace
> as the bootclass loader.
>
> Tested with vm.quick.testlist and the failing test.
>
> open webrev at http://cr.openjdk.java.net/~coleenp/8015391/
> bug link at http://bugs.sun.com/view_bug.do?bug_id=8015391
> local bug link https://jbs.oracle.com/bugs/browse/JDK-8015391
>
> Thanks,
> Coleen
>
More information about the hotspot-dev
mailing list