Native memory tracking generates records for individual C heap allocated objets. At startup time many symbols are created. Each symbol is a C heap malloc allocation so that they can be individually reclaimed. The symbols from the null boot loader are never reclaimed, since the null boot loader isn't unloaded. These symbols can be put in a more permanent memory area. This seems like it would be a performance gain because the immortal symbols do not need to be ref counted. It also seems like it would use less real memory since each symbol won't have a malloc buffer. My measurements so no performance improvements in either of these areas, unfortunately. The main reason to do this is for NMT. Also with permgen removal, these symbols are allocated to a mmap space using the same mechanism as arena mechanism, so that they can be shared with class data sharing without having to relocate them in the shared archive.
|