Linux内存性能优化
码农谷阿莫
程序员的自我修养
展开
-
06 | 如何迅速定位内存问题并优化内存?
前言前几节,通过几个案例,我们分析了各种常见的内存性能问题。相信通过它们,你对内存的性能分析已经有了基本的思路,也熟悉了很多分析内存性能的工具。你肯定会想,有没有迅速定位内存问题的方法?当定位出内存的瓶颈后,又有哪些优化内存的思路呢?今天就来梳理一下,怎样可以如何“快准狠”找到系统内存的问题,并且总结了相关的解决思路。内存性能指标为了分析内存的性能瓶颈,首先你要知道,怎样衡量内存的性能,也...原创 2019-11-28 16:33:14 · 460 阅读 · 0 评论 -
05 | Linux内存回收——Swap机制
前言上一节,我们通过一个斐波那契数列的案例,学习了内存泄漏的分析。如果在程序中直接或间接地分配了动态内存,一定要记得释放掉它们,否则就会导致内存泄漏,严重时甚至会耗尽系统内存。反过来讲,当发生了内存泄漏时,或者运行了大内存的应用程序,导致系统的内存资源紧张时,系统又会如何应对呢?在内存基础篇我们已经学过,这其实会导致两种可能结果,内存回收和 OOM 杀死进程。内存回收,也就是系统释放掉可...原创 2019-11-27 13:42:48 · 1945 阅读 · 0 评论 -
04 | 内存泄露了,该怎么定位和处理?
通过前几节对内存基础的学习,我相信你对 Linux 内存的工作原理,已经有了初步了解。这里简单复习一下,对普通进程来说,能看到的其实是内核提供的虚拟内存,这些虚拟内存还需要通过页表,由系统映射为物理内存。当进程通过 malloc() 申请虚拟内存后,系统并不会立即为其分配物理内存,而是在首次访问时,才通过缺页异常陷入内核中分配内存。为了协调 CPU 与磁盘间的性能差异,Linux 还会使用 ...原创 2019-11-23 13:13:32 · 760 阅读 · 0 评论 -
03 | 如何利用系统缓存优化程序的运行效率?
上一节,我们学习了内存性能中 Buffer 和 Cache 的概念。简单复习一下,Buffer 和 Cache 的设计目的,是为了提升系统的 I/O 性能。它们利用内存,充当起慢速磁盘与快速 CPU 之间的桥梁,可以加速 I/O 的访问速度。Buffer 和 Cache 分别缓存的是对磁盘和文件系统的读写数据。从写的角度来说,不仅可以优化磁盘和文件的写入,对应用程序也有好处,应用程序可以在数...原创 2019-11-21 20:53:14 · 329 阅读 · 0 评论 -
02 | 怎么理解内存中的Buffer和Cache?
上一节,我们梳理了 Linux 内存管理的基本原理,并学会了用 free 和 top 等工具,来查看系统和进程的内存使用情况。内存和 CPU 的关系非常紧密,而内存管理本身也是很复杂的机制,所以感觉知识很硬核、很难啃,都是正常的。但初学时,其实不用非得理解所有内容,继续往后学,多理解相关的概念并配合一定的实践之后,再回头复习往往会容易不少。当然,基本功也不容放弃。我们先来回顾一下系统的内存使用情...原创 2019-11-19 13:50:17 · 315 阅读 · 0 评论 -
01 | Linux内存是如何工作的?
引语同 CPU 管理一样,内存管理也是操作系统最核心的功能之一。内存主要用来存储系统和应用程序的指令、数据、缓存等。那么,Linux 到底是怎么管理内存的呢?内存映射通常所说的内存容量,就像我们日常生活中购买电脑时常说的这台计算机内存有多大,比如8GB,其实指的是物理内存。物理内存也称为主存,大多数计算机用的主存都是动态随机访问内存(DRAM)。只有内核才可以直接访问物理内存。那么,进程要访...原创 2019-11-17 13:57:50 · 225 阅读 · 0 评论