CentOS下java进程内存占用高

从glibc 2.11(为应用系统在多核心CPU和多Sockets环境中高伸缩性提供了一个动态内存分配的特性增强)版本开始引入了per thread arena内存池,Native Heap区被打散为sub-pools ,这部分内存池叫做Arena内存池。也就是说,以前只有一个main arena,目前是一个main arena(还是位于Native Heap区) + 多个per thread arena,多个线程之间不再共用一个arena内存区域了,保证每个线程都有一个堆,这样避免内存分配时需要额外的锁来降低性能。main arena主要通过brk/sbrk系统调用去管理,per thread arena主要通过mmap系统调用去分配和管理。»

参考文章,应该是Linux Arena内存池引起的, 基于性能的考虑(分配内存的效率),默认值为cpu数量*8。 基于性能及内存的使用,适当调整。或者使用tcmalloc代替系统自带的malloc

https://blog.csdn.net/u010686469/article/details/77319599

https://www.jianshu.com/p/7350a95506f8

https://yq.aliyun.com/articles/227924

https://www.cnblogs.com/scotth/p/4285480.html

posted on 2019-11-27 10:07  jmbkeyes  阅读(2451)  评论(0)    收藏  举报

导航