MemLeak

c++ 内存管理

和自甴很熟 提交于 2021-02-02 05:00:50
Valgrind 是个开源的工具,功能很多。 Memcheck是一个内存错误检测器。它有助于使你的程序,尤其是那些用C和C++写的程序,更加准确。 Cachegrind是一个缓存和分支预测分析器。它有助于使你的程序运行更快,分析CPU的cache命中率、丢失率,用于进行代码优化。。 Callgrind是一个调用图缓存生成分析器。它与Cachegrind的功能有重叠,但也收集Cachegrind不收集的一些信息,检测程序代码的运行时间和调用过程,以及分析程序性能。 Helgrind是一个线程错误检测器。它有助于使你的多线程程序更加准确,用于检查多线程程序的竞态条件。 DRD也是一个线程错误检测器。它和Helgrind相似,但使用不同的分析技术,所以可能找到不同的问题。 Massif是一个堆分析器。它有助于使你的程序使用更少的内存。 DHAT是另一种不同的堆分析器。它有助于理解块的生命期、块的使用和布局的低效等问题。 SGcheck是一个实验工具,用来检测堆和全局数组的溢出。它的功能和Memcheck互补:SGcheck找到Memcheck无法找到的问题,反之亦然。 BBV是个实验性质的SimPoint基本块矢量生成器。它对于进行计算机架构的研究和开发很有用处 memcheck valgrind --tool=memcheck --leak-check=full --show

二十一、Linux性能优化实战学习笔记- 如何“快准狠”找到系统内存的问题?

我们两清 提交于 2020-10-24 14:33:18
目录 一、内存性能指标 二、进程内存的使用 1、虚拟内存 2、常驻内存 3、共享内存 4、swap内存 5、缺页异常 三、工具 四、迅速分析内存的性能瓶颈 1、思路逻辑图 2、优化思路 一、内存性能指标 已用内存、剩余内存、共享内存、可用内存、缓存和缓冲区的用量。 共享内存 是通过 tmpfs 实现的,所以它的大小也就是 tmpfs 使用的内存大小。tmpfs其实也是一种特殊的缓存 缓存 分两部分: 读取 文件的页缓存 ,用来缓存从磁盘读取的数据,可以加快以后再次访问的速度 Slab 分配器中的可回收内存 缓冲区: 对原始磁盘块的 临时存储 ,用来缓存将要写入磁盘的数据。这样,内核就可以把 分散的写集中起来,统一优化磁盘写入 缓存和缓冲区,就属于可回收内存。它们在内存管理中,通常被叫做 文件页(File-backed Page), 内存映射获取的文件映射页,也是一种常见的文件页。它也可以被释放掉,下次再访问的时候,从文件重新读取 二、进程内存的使用 虚拟内存、常驻内存、共享内存以及 Swap 内存 1、虚拟内存 进程代码段、数据段、共享内存、已经申请的堆内存和已经换出的内存等。这里要注意, 已经申请的内存,即使还没有分配物理内存,也算作虚拟内存。 2、常驻内存 实际使用的物理内存,注意不包括共享内存和swap。 常驻内存一般会换算成占系统总内存的百分比,也就是 进程的内存使用率 3

centos7 升级最新版内核 并安装 bcc-tools

巧了我就是萌 提交于 2020-04-28 10:43:37
centos7 升级最新版内核 升级系统 [root@jikeshijian ~]# yum update -y 安装 ELRepo [root@jikeshijian ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org [root@jikeshijian ~]# rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 安装新内核 [root@jikeshijian ~]# yum remove -y kernel-headers kernel-tools kernel-tools-libs [root@jikeshijian ~]# yum --enablerepo="elrepo-kernel" install -y kernel-ml kernel-ml-devel kernel-ml-headers kernel-ml-tools kernel-ml-tools-libs kernel-ml-tools-libs-devel 更新 Grub 后重启 [root@jikeshijian ~]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub

K8s资源Pod(第一篇)

耗尽温柔 提交于 2019-12-13 11:36:33
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 资源配置格式: apiVersion:用来定义api群组的版本。 Kind:用来定义资源类型。 metadata:用来定义元数据,元数据中包含,资源的名字,标签,隶属的名称空间等。 sepc: 用来定义资源的期望状态。 status:资源的实际状态,用户不能够定义,由k8s自行维护。 获取集群所支持的所有资源类型: [root@k8smaster data]# kubectl api-resources NAME SHORTNAMES APIGROUP NAMESPACED KIND bindings true Binding componentstatuses cs false ComponentStatus configmaps cm true ConfigMap endpoints ep true Endpoints events ev true Event limitranges limits true LimitRange namespaces ns false Namespace nodes no false Node persistentvolumeclaims pvc true PersistentVolumeClaim persistentvolumes pv false