jemalloc在linux上从安装到使用

上次在引导大家安装redis时提到可能会报错:

发现了redis有用到jemalloc。

首先,jemalloc是干什么的?

我们看看作者自己的介绍:

jemalloc is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support

意思是说jemalloc干了malloc干的活,而且干得好一些,主要体现在避免内存碎片与并发扩展上。

首先,什么是内存碎片?

假设系统只有一片64字节的内存,分配给4个单元,每个16个字节:

将这4个单元分配释放再重新分配4个12字节的内存片:

我们发现多了4*4不连续的内存片,下次我们就不能分配12或者16字节的内存了。

另外,glibc分配内存一般向4或者8取整,比如我们向申请13字节的内存,实际上得到的内存片会是16字节,多出来的3个字节我们不知道,也就无法使用了。

内存碎片很可怕吗?

短时间内不明显,对于线上的服务器比如nginx,运行时间可能经年,每天几亿的请求量,如果每天产生100片 ,一年下来也是3万多片 ,相当恐怖!

jemalloc可以有效的解决这个问题!

jemalloc的性能图(上篇已经展示过):

既然jemalloc这么牛逼,我们就来安装吧!

下载到linux目录下解压:

tar -xjvf jemalloc-4.2.1.tar.bz2

生成的文件列表如下:

在此目录下预编译

./configure –prefix=/usr/local/jemalloc

完成后再编译:

make -j8 && make install

我们到生成目录去看看:

生成的头文件在include里,库在lib里。

至此,安装算是完成了。

下面看看如何使用:

在编译链接时直接指向jemalloc即可:

gcc -g -c -o 1.o 1.c

gcc -g -o 1.out 1.o -L/usr/local/jemalloc/lib -ljemalloc

运行程序时可能会报找不到库:

只要将jemalloc的库被系统找到即可:

echo /usr/local/jemalloc/lib >> /etc/ld.so.conf

ldconfig

再次运行即可

linux离线安装jemalloc,jemalloc在linux上从安装到使用相关推荐

  1. oracle golden gate安装,Oracle GoldenGate在RAC上部署安装

    很多用户都采用了OGG作为生产环境的灾备复制软件,生产端通常是双节点的RAC,灾备端可能是同样环境也可能是单实例环境.生产端在安装OGG时会从存储上划分一个独立的共享磁盘,将其做成文件系统,然后将OG ...

  2. mysql如何安装 centos7_如何解决centos7上mysql安装及问题

    本文主要向大家介绍了如何解决centos7上mysql安装及问题,通过具体的步骤向大家展现,希望对大家学习mysql有所帮助. 1 卸载centos7自带mariadb数据库 (1)列出所有被安装的r ...

  3. python windows 安装scrapy_Python Scrapy在windows上的安装方法

    如果想要学习爬虫,肯定会了解Scrapy,但安装Scrapy的方法相对于安装其他第三方库麻烦一点. 下面总结一下在我的电脑上安装Scrapy的方法,我的电脑是Windows10,32位操作系统.有如下 ...

  4. html5 判断是否安装app,js判断手机上是否安装app

    通过js进行判断,判断手机上是否安装某一app,因为js并不能操作手机原生的API,所以它判断的方法只是通过动态生成iframe,用它打开app,看能不能打开,通过这个时间进行判断,下面有两段代码: ...

  5. 计算机itunes无法安装,Win7 iTunes安装出错怎么办?电脑上无法安装iTunes怎么解决?...

    Win7 iTunes安装出错怎么办?这个问题很多用户都遭遇过,不过不幸的是,将近一半的用户使用的并非同样的32位(64位)程序包,当然这个很容易解决,难的是哪些下正确了却无法安装程序的用户.具体解决 ...

  6. 【踩坑日记 · 嵌入式 Linux】在香橙派 Zero 2 上编译安装 CH340 驱动(OrangePi Zero 2)

    前言 最近想尝试在 Linux 下编写和烧录 51 单片机程序,需要用到 CH340 模块,但是香橙派 Zero 2 没有预装它的驱动,所以需要下载 CH340 驱动的源码手动编译安装.在这里记录一下 ...

  7. linux ubuntu18.1安装教程,Ubuntu 18.04上Qmmp安装教程

    导读 Qmmp是Ubuntu或其他操作系统的Winamp替代品.它像Winamp一样具有最小的界面.Qmmp是一个开源的.免费的基于qm的多媒体播放器,它不仅适用于Ubuntu,还可以安装在ALT L ...

  8. linux 向日葵 使用方法,远程控制工具——Centos7上向日葵安装使用

    最近发现国产软件向日葵远控确实很好用windows linux mac androdid ios 全平台支持确实很棒今天就给大家演示一下linux版的安装教程. 首先在windows系统安装向日葵远控 ...

  9. mac编译安装php环境,在Mac上编译安装PHP7的开发环境

    今天看到鸟哥发微博说php7 beta1测试版发布了,于是赶紧就去抢先下载,把自己的开发环境也升级到PHP7去,话不多少,下面就一起来搞起吧... 首先你得去官网下载php7 beta1的版本 这里由 ...

  10. 阿里云安装mysql5.7_同一服务器上二进制安装mysql5.7和mysql5.6

    一.二进制包与源码包的区别 二进制包和源码包是软件包的两种形式.源码包里面包含程序原始的代码,需要在计算机上进行编译后才可以产生可运行程序,所以源码安装时间会比较长:而二进制包里面包含已经编译过.可马 ...

最新文章

  1. 用Selenium 爬虫下载文件,解除Chrome 下载警告 (Keep or Discard),设置下载目录的方法
  2. 人机融合智能与深度态势感知
  3. 快速排序的递归和非递归
  4. 实探全球第九大超算中心:温水冷却节能30% 正寻求新突破
  5. 【知识发现】天池平台新浪微博互动预测-ItemCF推荐方法
  6. 初识 Vue(10)---(计算属性的 setter 和 getter)
  7. Jquery 提交 乱码的问题
  8. 一键解决局域网共享之批处理
  9. aspeed显卡安装ubuntu驱动
  10. 如何向外行讲解物联卡2G、3G和4G的区别
  11. Centos7.X修改hostname立刻生效-修改/etc/hostname后立刻生效-Centos7.x修改hostname永久生效
  12. 金融量化?金融市场?股票? 来,告诉你这些都是什么
  13. 微信公众号的用户运营?
  14. 3D游戏设计-模型与动画
  15. 删除表字段的sql语句
  16. (三)mmclassification图像分类——模型训练
  17. Python 快速入门学习总结
  18. 竞价推广排名与自然排名的优缺点?
  19. MySQL8.0.27安装后,使用CMD无法启动mysql服务
  20. 怎样共享windows和linux之间的文件

热门文章

  1. python持续集成工具_21 个好用的持续集成工具,总有一款适合你
  2. 想了解视频加水印软件哪个好?这2个实用的软件分享给你
  3. “德阳造”水上智能清污机器人 一次可收集500公斤垃圾
  4. 完全用GNU/Linux工作,摈弃Windows---你我共勉
  5. [USACO13FEB]拖拉机Tractor
  6. HTML基础常见面试题
  7. 名词从句、定语从句、状语从句的位置及图示
  8. 安卓逆向——Xposed插件常用HOOK方法
  9. 【Linux基础】文件及文件权限(图文详解)
  10. 仿滴滴打车时间选择器开始结束时间