zoukankan      html  css  js  c++  java
  • Java程序在Linux上运行虚拟内存耗用很大

    突然集群的2个节点挂了,通过top查看, 虚拟内存22G,

     通过 pmap -x 8 | grep anon

    一大堆64M

    Linux下glibc的内存管理机制用了一个很奇妙的东西,叫arena。在glibc分配内存的时候,大内存从从中央分配区分配,小内存则在线程创建时,从缓存区分配。为了解决分配内存的性能的问题,就引入了这个叫做arena的memory pool。而恰好,在64bit系统下面,它的缺省配置为64M。一个进程可以最多有cores*8个arena,假如服务器是4核的,那么最多有4*8=32个arena,也就是32*64 = 2048M内存。然而,为了满足业务,我这台服务器居然是12核的,单单一个进程的arena占用的内存就达到了6G。

    可以发现,通过服务器上一个参数MALLOC_ARENA_MAX可以控制最大的arena数量

    export MALLOC_ARENA_MAX=1
    
    export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL MALLOC_ARENA_MAX

    重启后java进程, 查看效果。

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

  • 相关阅读:
    用纯css画个三角形
    宝塔安装
    js判断浏览器版本
    JS打开url的几种方法
    java加密算法
    Mysql数据库多对多关系未建新表
    数据库唯一性约束异常插入处理
    HTML5中localStorage的使用
    软件设计师14-UML建模
    数据库设计流程
  • 原文地址:https://www.cnblogs.com/fengjian2016/p/9728318.html
Copyright © 2011-2022 走看看