Hi, I'm trying to figure out which parts of memory Hotspot can allocate in HugePages on Linux (appears to be heap and code cache by default, plus Metaspace with -XX:+UseLargePagesInMetaspace) and noticed something I can't explain.
There's 1G allocation on the OS level in 4K pages that is apparently attributed to Class metadata, although Metaspace is maxed at a value much lower than 1G. Question: why? [oracle@oel6u7 bin]$ grep -B 11 'KernelPageSize: 4 kB' /proc/18906/smaps | grep '^Size:' | head Size: 4 kB Size: 4 kB Size: 2764 kB Size: 12288 kB Size: 1036288 kB Size: 128 kB Size: 4 kB Size: 4 kB Size: 4 kB Size: 8 kB [oracle@oel6u7 bin]$ /home/oracle/jdk1.8.0_72/bin/jcmd 18906 VM.native_memory summary 18906: Native Memory Tracking: Total: reserved=2069703KB, committed=1032559KB - Java Heap (reserved=786432KB, committed=786432KB) (mmap: reserved=786432KB, committed=786432KB) - Class (reserved=1142808KB, committed=106520KB) (classes #13624) (malloc=2072KB #22966) (mmap: reserved=1140736KB, committed=104448KB) - Thread (reserved=56009KB, committed=56009KB) (thread #55) (stack: reserved=55512KB, committed=55512KB) (malloc=178KB #272) (arena=319KB #108) - Code (reserved=55407KB, committed=55407KB) (malloc=5487KB #7167) (mmap: reserved=49920KB, committed=49920KB) - GC (reserved=2600KB, committed=1748KB) (malloc=32KB #355) (mmap: reserved=2568KB, committed=1716KB) - Compiler (reserved=213KB, committed=213KB) (malloc=82KB #331) (arena=131KB #3) - Internal (reserved=4921KB, committed=4917KB) (malloc=4885KB #16137) (mmap: reserved=36KB, committed=32KB) - Symbol (reserved=17518KB, committed=17518KB) (malloc=14377KB #172159) (arena=3141KB #1) - Native Memory Tracking (reserved=3617KB, committed=3617KB) (malloc=149KB #2329) (tracking overhead=3468KB) - Arena Chunk (reserved=178KB, committed=178KB) (malloc=178KB) [oracle@oel6u7 bin]$ /home/oracle/jdk1.8.0_72/bin/jcmd 18906 VM.native_memory detail | grep -A 10 'for Class' [0x0000000100000000 - 0x0000000140000000] reserved 1048576KB for Class from [0x00007f71950e2ad2] ReservedSpace::initialize(unsigned long, unsigned long, bool, char*, unsigned long, bool)+0xc2 [0x00007f71950e2d0b] ReservedSpace::ReservedSpace(unsigned long, unsigned long, bool, char*, unsigned long)+0x1b [0x00007f7194ec8300] Metaspace::allocate_metaspace_compressed_klass_ptrs(char*, unsigned char*)+0x40 [0x00007f7194eca7df] Metaspace::global_initialize()+0x4cf [0x0000000100000000 - 0x0000000100c00000] committed 12288KB from [0x00007f71950e2549] VirtualSpace::expand_by(unsigned long, bool)+0x199 [0x00007f7194ec6766] VirtualSpaceList::expand_node_by(VirtualSpaceNode*, unsigned long, unsigned long)+0x76 [0x00007f7194ec9580] VirtualSpaceList::expand_by(unsigned long, unsigned long)+0xf0 [0x00007f7194ec9713] VirtualSpaceList::get_new_chunk(unsigned long, unsigned long, unsigned long)+0xb3 ... [oracle@oel6u7 bin]$ head ../logs/gc.log Java HotSpot(TM) 64-Bit Server VM (25.72-b15) for linux-amd64 JRE (1.8.0_72-b15), built on Dec 22 2015 22:00:07 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8) Memory: 4k page, physical 3082784k(506980k free), swap 1257468k(1148276k free) CommandLine flags: -XX:InitialCodeCacheSize=50331648 -XX:InitialHeapSize=49324544 -XX:MaxHeapSize=805306368 -XX:MaxMetaspaceSize=268435456 -XX:MetaspaceSize=268435456 -XX:NativeMemoryTracking=detail -XX:+PrintGC -XX:+PrintGCTimeStamps -XX:ReservedCodeCacheSize=50331648 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseLargePages -XX:+UseLargePagesInMetaspace -- Regards Timur Akhmadeev
_______________________________________________ hotspot-gc-use mailing list hotspot-gc-use@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use