首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

与虚拟内存相比,为什么我的进程占用更高的常驻内存?

进程占用更高的常驻内存可能是由于以下几个原因:

  1. 虚拟内存机制:虚拟内存是一种操作系统提供的内存管理技术,它将进程的内存地址空间分为多个虚拟页面,并将这些虚拟页面映射到物理内存或磁盘上。当进程需要访问某个虚拟页面时,操作系统会将其加载到物理内存中。因此,虚拟内存可以使进程的内存占用看起来较小,因为只有部分页面被加载到物理内存中。
  2. 常驻内存:常驻内存是指进程在物理内存中一直保持驻留的部分,不会被操作系统交换到磁盘上。常驻内存通常包括进程的代码段、数据段、堆栈等。相比之下,虚拟内存中的部分页面可能被交换到磁盘上,需要时再加载到物理内存中。因此,进程的常驻内存占用会比虚拟内存占用更高。
  3. 内存分配和释放:进程在运行过程中会动态地申请和释放内存。如果进程频繁地申请和释放内存,可能会导致内存碎片的产生,从而增加了进程的常驻内存占用。
  4. 内存泄漏:内存泄漏是指进程在运行过程中申请的内存没有被正确释放,导致内存占用不断增加。如果进程存在内存泄漏问题,常驻内存占用会逐渐增加。

综上所述,进程占用更高的常驻内存可能是由于虚拟内存机制、常驻内存、内存分配和释放、内存泄漏等原因造成的。为了减少进程的常驻内存占用,可以优化内存管理、减少内存碎片、及时释放不再使用的内存,并进行内存泄漏检测和修复。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Linux系统编程】—— 虚拟内存与进程地址空间的管理:操作系统如何实现内存保护与高效分配

堆的地址通常递增,栈的地址则通常递减,静态变量和全局变量则存储在数据段。 虚拟地址与进程的关系 在进程中,每个变量和内存段都有一个虚拟地址。...进程地址空间的结构 每个进程在操作系统中都有自己的地址空间,这个地址空间由多个虚拟内存区域组成。操作系统通过mm_struct结构来管理进程的虚拟内存空间。...mm_struct包含以下关键字段: mmap:指向虚拟内存区域(VMA)的链表。 task_size:该进程虚拟内存的大小。...为什么使用虚拟内存(虚拟地址空间) 这个问题其实可以转化为:如果程序直接可以操作物理内存会造成什么问题?...这种机制大大简化了程序员的内存管理工作,并为现代操作系统提供了更高效、更安全的内存管理方案。

12310

Android 中的 Dalvik Heap 和 Native Heap

这样设计的目的是为了让 Android 系统能同时让比较多的进程常驻内存,这样程序启动时就不用每次都重新加载到内存,能够给用户更快的响应。...迫使每个应用程序使用较小的内存,移动设备非常有限的RAM就能使比较多的app常驻其中。...进程内存空间和 RAM 之间的关系 进程的内存空间只是虚拟内存(或者叫作逻辑内存),而程序的运行需要的是实实在在的内存,即物理内存(RAM)。...在必要时,操作系统会将程序运行中申请的内存(虚拟内存)映射到RAM,让进程能够使用物理内存。...- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存) USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存) 一般来说内存占用大小有如下规律

11.3K00
  • OpenResty 和 Nginx 如何分配和管理内存

    下面我们首先介绍 Nginx 进程在系统层面的内存占用分布,然后再逐个介绍应用层面的各种内存分配器。 系统层面 在现代操作系统中,进程在最高层面上申请和使用的内存都是虚拟内存。...操作系统为每个进程分配和管理虚拟内存,并将实际使用的虚拟内存页,映射到物理内存页上去(比如 DDR4 内存条等设备里的)。...一个很重要的概念是,进程可能会申请很多的虚拟内存空间,而实际只使用其中很小一部分。比如,一个进程可以向操作系统申请 2TB 的虚拟内存空间,即使当前系统只有 8GB 的物理内存(RAM)。...实际使用的那一小部分虚拟内存(即读写了数据的),通常被叫做 RSS,即 常驻内存(resident memory)。当系统的物理内存快耗尽的时候,一部分常驻内存页里的数据会被 交换 到硬盘上^1。...有很多工具可以提供任意进程(包括 OpenResty 应用的 nginx 工作进程)的虚拟内存占用、常驻内存占用和交换出去的内存空间大小。

    1.5K10

    Linux 系统 top 命令详解

    大家好,又见面了,我是你们的朋友全栈君。 文章目录 前言 top 命令关键词详解 1. VIRT:virtual memory usage 虚拟内存 2....VIRT:virtual memory usage 虚拟内存 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m...RES:resident memory usage 常驻内存 1、进程当前使用的内存大小,不包括swap out 2、包含其他进程的共享 3、如果申请100m的内存,实际使用10m,它只增长10m,...与VIRT相反 4、关于库占用内存的情况,它只统计加载的库文件所占内存大小 5、单位kb。...NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级 VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。

    3.9K10

    springboot第47集:【思维导图】面向对象,关键字,标识符,变量,数组的使用...

    root %CPU(CPU使用率): 98.7 %MEM(内存使用率): 0.1 VSZ(虚拟内存大小): 111512 KB RSS(常驻集大小): 2036 KB TTY/STAT/START TIME...%MEM: 进程的物理RAM(内存)使用百分比。 VSZ: 虚拟内存大小,包括进程可以访问的所有内存,包括已交换出去的内存。 RSS: 常驻集大小,是进程在RAM中的部分内存(非交换的)。...它是Linux内核内存管理子系统的一部分,参与处理当系统的物理内存已满时的交换空间。 PID(进程ID): 进程的唯一标识符。 USER(用户): 进程的所有者。...%CPU(CPU使用率): 进程占用CPU的百分比。 %MEM(内存使用率): 进程占用物理内存的百分比。 VSZ(虚拟内存大小): 进程的虚拟内存大小。...RSS(常驻集大小): 进程占用的实际内存大小。 TTY/STAT/START TIME(终端/状态/启动时间): 一些其他进程状态信息。 COMMAND(命令): 进程的执行命令或名称。

    40710

    OS——内存扩充技术

    OS——内存扩充技术 需求 为什么需要内存扩充技术?我们知道当并发运动的多个进程长度之和大于内存可用空间时,多道程序设计就会出现很多困难。内存扩充技术就是借助大容量的辅存,在逻辑上实现内存的扩充。...常见的内存扩充技术有覆盖技术、交换技术以及虚拟内存。本节主要探讨前两种,即虚拟内存出现前的内存扩充技术。...在覆盖技术中,内存被分为固定区与覆盖区,其中固定区是常驻内存放入的区域,调入后就不再调出,直到运行结束。...覆盖 空间分配 Main 10KB A和B 30KB C、D、E 40KB 可以发现:每一个覆盖段小组的内存必须为该小组内占用内存最大的程序段。...交换技术的类型 按照在内存与外存间切换的单位,可以分为整体交换与部分交换 整体交换:以整个进程为单位在内存和外存之间交换,目的是减轻内存负荷,多用于多道程序系统,处理机中级调度的核心就是交换技术。

    72020

    php为什么要用swoole?

    我认为有以下几点: 常驻内存,避免重复加载带来的性能损耗,提升海量性能 协程异步,提高对 I/O 密集型场景并发处理能力(如:微信开发、支付、登录等) 方便地开发 Http、WebSocket、TCP、...UDP 等应用,可以与硬件通信 PHP 高性能微服务架构成为现实 常驻内存 目前传统 PHP框架,在处理每个请求之前,都要做一遍加载框架文件、配置的操作。...微信图片_20191122205314.png 说到协程,就得先简单说说进程和线程,众所周知进程是很占用资源的,为了处理请求大量创建进程肯定是得不偿失的。...协程是在单线程基础上实现的,它可以最大限度利用 CPU 资源,而不会在等待 I/O 时白白浪费。当然,协程数越多占用的内存也就越多,不过这个是可以接受的,相比进程和线程,占用的资源是相对较少的。...如有错误之处欢迎指出,我是真心想向大家推荐 Swoole! 以上就是php为什么要用swoole?的详细内容

    1K00

    ps命令手册

    ps -aux提供的关于每个进程的信息包括进程的用户,PID,进程使用的CPU百分比,进程使用的内存百分比,VSZ(虚拟大小以千字节为单位),RSS(实际内存大小或以1024字节为单位的常驻集大小),STAT...与大多数命令相比,ps之前的连字符是可选的,不是强制性的。...VSZ 虚拟内存占用大小 单位:kb(killobytes) RSS 实际内存占用大小 单位:kb(killobytes) TTY...常驻内存 1、进程当前使用的内存大小,但不包括swap out 2、包含其他进程的共享 3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反 4、关于库占用内存的情况,它只统计加载的库文件所占内存大小...进程使用的CPU时间总计,单位1/100秒 n %MEM 进程使用的物理内存百分比 o VIRT 进程使用的虚拟内存总量,单位kb。

    1.3K30

    总监看完top详解后做出了这样的决定

    执行完top命令之后,显示结果如下图,参数较多,我们细细道来 我把开头的五行截图下来: 2....VIRT:virtual memory usage 虚拟内存 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m...,而不是实际的使用量 RES:resident memory usage 常驻内存 1、进程当前使用的内存大小,但不包括swap out 2、包含其他进程的共享 3、如果申请100m的内存,实际使用10m...,它只增长10m,与VIRT相反 4、关于库占用内存的情况,它只统计加载的库文件所占内存大小 SHR:shared memory 共享内存 1、除了自身进程的共享内存,也包括其他进程的共享内存 2、虽然进程只使用了几个共享库的函数..., 学会看几个重要的参数即可,比如load averages,比如查看占用内存最多的进程等

    1.8K40

    77% 的 Linux 运维都不懂的内核问题,这篇全告诉你了

    这篇文章主要是分析了单个进程空间的内存布局与分配,是从全局的视角分析下内核对内存的管理; 下面主要从以下方面介绍 Linux 内存管理: 进程的内存申请与分配; 内存耗尽之后 OOM; 申请的内存都在哪...OOM 关键文件 oom_kill.c,里面介绍了当内存不够时,系统如何选择最应该被杀死的进程,选择因素有挺多的,除了进程占用的内存外,还有进程运行的时间,进程的优先级,是否为 root 用户进程,子进程个数和占用内存以及用户控制参数...例如只有8g的物理内存,然后 redis 虚拟内存占用了24G,物理内存占用3g,如果这时执行 bgsave,子进程和父进程共享物理内存,但是虚拟内存是自己的,即子进程会申请24g的虚拟内存,这很夸张大于物理内存...,用三个属性进行了说明,即所有虚拟内存,常驻内存匿名映射页以及常驻内存文件映射页。...如果不是脏页,则直接释放回收,因为如果是io读缓存,直接释放掉,下次读时,缺页异常,直接到磁盘读回来即可,如果是文件映射页,直接释放掉,下次访问时,也是产生两个缺页异常,一次将文件内容读取进磁盘,另一次与进程虚拟内存关联

    49611

    80% 的 Linux 都不懂的内存问题

    这篇文章主要是分析了单个进程空间的内存布局与分配,是从全局的视角分析下内核对内存的管理; 下面主要从以下方面介绍 Linux 内存管理: 进程的内存申请与分配; 内存耗尽之后 OOM; 申请的内存都在哪...OOM 关键文件 oom_kill.c,里面介绍了当内存不够时,系统如何选择最应该被杀死的进程,选择因素有挺多的,除了进程占用的内存外,还有进程运行的时间,进程的优先级,是否为 root 用户进程,子进程个数和占用内存以及用户控制参数...例如只有8g的物理内存,然后 redis 虚拟内存占用了24G,物理内存占用3g,如果这时执行 bgsave,子进程和父进程共享物理内存,但是虚拟内存是自己的,即子进程会申请24g的虚拟内存,这很夸张大于物理内存...,用三个属性进行了说明,即所有虚拟内存,常驻内存匿名映射页以及常驻内存文件映射页。...如果不是脏页,则直接释放回收,因为如果是io读缓存,直接释放掉,下次读时,缺页异常,直接到磁盘读回来即可,如果是文件映射页,直接释放掉,下次访问时,也是产生两个缺页异常,一次将文件内容读取进磁盘,另一次与进程虚拟内存关联

    1.1K20

    这些内存问题你真的搞懂了吗?

    这篇文章主要是分析了单个进程空间的内存布局与分配,是从全局的视角分析下内核对内存的管理; 下面主要从以下方面介绍 Linux 内存管理: 进程的内存申请与分配; 内存耗尽之后 OOM; 申请的内存都在哪...OOM 关键文件 oom_kill.c,里面介绍了当内存不够时,系统如何选择最应该被杀死的进程,选择因素有挺多的,除了进程占用的内存外,还有进程运行的时间,进程的优先级,是否为 root 用户进程,子进程个数和占用内存以及用户控制参数...例如只有8g的物理内存,然后 redis 虚拟内存占用了24G,物理内存占用3g,如果这时执行 bgsave,子进程和父进程共享物理内存,但是虚拟内存是自己的,即子进程会申请24g的虚拟内存,这很夸张大于物理内存...,用三个属性进行了说明,即所有虚拟内存,常驻内存匿名映射页以及常驻内存文件映射页。...如果不是脏页,则直接释放回收,因为如果是io读缓存,直接释放掉,下次读时,缺页异常,直接到磁盘读回来即可,如果是文件映射页,直接释放掉,下次访问时,也是产生两个缺页异常,一次将文件内容读取进磁盘,另一次与进程虚拟内存关联

    57940

    77% 的 Linux 运维都不懂的内核问题,这篇全告诉你了

    这篇文章主要是分析了单个进程空间的内存布局与分配,是从全局的视角分析下内核对内存的管理; 下面主要从以下方面介绍 Linux 内存管理: 进程的内存申请与分配; 内存耗尽之后 OOM; 申请的内存都在哪...OOM 关键文件 oom_kill.c,里面介绍了当内存不够时,系统如何选择最应该被杀死的进程,选择因素有挺多的,除了进程占用的内存外,还有进程运行的时间,进程的优先级,是否为 root 用户进程,子进程个数和占用内存以及用户控制参数...例如只有8g的物理内存,然后 redis 虚拟内存占用了24G,物理内存占用3g,如果这时执行 bgsave,子进程和父进程共享物理内存,但是虚拟内存是自己的,即子进程会申请24g的虚拟内存,这很夸张大于物理内存...,用三个属性进行了说明,即所有虚拟内存,常驻内存匿名映射页以及常驻内存文件映射页。...如果不是脏页,则直接释放回收,因为如果是io读缓存,直接释放掉,下次读时,缺页异常,直接到磁盘读回来即可,如果是文件映射页,直接释放掉,下次访问时,也是产生两个缺页异常,一次将文件内容读取进磁盘,另一次与进程虚拟内存关联

    61620

    5分钟学会两年经验Linux运维都不懂的内核问题

    这篇文章主要是分析了单个进程空间的内存布局与分配,是从全局的视角分析下内核对内存的管理; 下面主要从以下方面介绍 Linux 内存管理: 进程的内存申请与分配; 内存耗尽之后 OOM; 申请的内存都在哪...OOM 关键文件 oom_kill.c,里面介绍了当内存不够时,系统如何选择最应该被杀死的进程,选择因素有挺多的,除了进程占用的内存外,还有进程运行的时间,进程的优先级,是否为 root 用户进程,子进程个数和占用内存以及用户控制参数...例如只有8g的物理内存,然后 redis 虚拟内存占用了24G,物理内存占用3g,如果这时执行 bgsave,子进程和父进程共享物理内存,但是虚拟内存是自己的,即子进程会申请24g的虚拟内存,这很夸张大于物理内存...,用三个属性进行了说明,即所有虚拟内存,常驻内存匿名映射页以及常驻内存文件映射页。...如果不是脏页,则直接释放回收,因为如果是io读缓存,直接释放掉,下次读时,缺页异常,直接到磁盘读回来即可,如果是文件映射页,直接释放掉,下次访问时,也是产生两个缺页异常,一次将文件内容读取进磁盘,另一次与进程虚拟内存关联

    65920

    77%的Linux运维都不懂的内核问题

    这篇文章主要是分析了单个进程空间的内存布局与分配,是从全局的视角分析下内核对内存的管理; 下面主要从以下方面介绍 Linux 内存管理: 进程的内存申请与分配; 内存耗尽之后 OOM; 申请的内存都在哪...OOM 关键文件 oom_kill.c,里面介绍了当内存不够时,系统如何选择最应该被杀死的进程,选择因素有挺多的,除了进程占用的内存外,还有进程运行的时间,进程的优先级,是否为 root 用户进程,子进程个数和占用内存以及用户控制参数...例如只有8g的物理内存,然后 redis 虚拟内存占用了24G,物理内存占用3g,如果这时执行 bgsave,子进程和父进程共享物理内存,但是虚拟内存是自己的,即子进程会申请24g的虚拟内存,这很夸张大于物理内存...第二句后半部分, total-vm:186660kB, anon-rss:9388kB, file-rss:4kB 把一个进程内存使用情况,用三个属性进行了说明,即所有虚拟内存,常驻内存匿名映射页以及常驻内存文件映射页...如果不是脏页,则直接释放回收,因为如果是io读缓存,直接释放掉,下次读时,缺页异常,直接到磁盘读回来即可,如果是文件映射页,直接释放掉,下次访问时,也是产生两个缺页异常,一次将文件内容读取进磁盘,另一次与进程虚拟内存关联

    2K80

    系统内存管理:虚拟内存、内存分段与分页、页表缓存TLB以及Linux内存管理

    这样,进程可以以一种透明的方式访问内存,无需关心内存的实际物理位置。通过虚拟内存机制,操作系统能够更好地管理系统内存资源,提供更高的安全性和稳定性。...假设只有20%的一级页表项被使用,那么页表占用的内存空间只有0.804MB,相比于单级页表的4MB,内存节约非常巨大。为什么不分级的页表无法实现这样的内存节约呢?...虽然每个进程都有独立的虚拟内存,但虚拟内存中的内核地址关联的是相同的物理内存,这样进程切换到内核态后就可以方便地访问内核空间内存。...虚拟内存的使用使得每个进程都可以拥有相同的虚拟地址空间,而不用担心与其他进程的地址冲突。通过虚拟内存机制,操作系统能够更好地管理系统内存资源,提供更高的安全性和稳定性。...Linux的内存管理涉及逻辑地址和线性地址的转换,将虚拟地址空间分为内核空间和用户空间,方便进程访问内核空间内存。我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

    83380

    linux top命令VIRT,RES,SHR,DATA的含义

    VIRT:virtual memory usage 虚拟内存 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,...而不是实际的使用量 RES:resident memory usage 常驻内存 1、进程当前使用的内存大小,但不包括swap out 2、包含其他进程的共享 3、如果申请100m的内存,实际使用10m...,它只增长10m,与VIRT相反 4、关于库占用内存的情况,它只统计加载的库文件所占内存大小 SHR:shared memory 共享内存 1、除了自身进程的共享内存,也包括其他进程的共享内存 2、虽然进程只使用了几个共享库的函数...进程使用的CPU时间总计,单位1/100秒 n %MEM 进程使用的物理内存百分比 o VIRT 进程使用的虚拟内存总量,单位kb。...VIRT=SWAP+RES p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。 q RES 进程使用的、未被换出的物理内存大小,单位kb。

    5.7K20

    一次关于k8s kubectl top 和 contained ps 不一致的问题探究

    k8s kubectl top命令和contained内部 ps 看到的进程内存占用不一致。下午的时候,我被这个问题问倒了。具体如图 ?...在上 Kubernetes 的后半年,业务服务较少,偶尔会阶段性被运维唤醒,问之 “为什么你们的服务内存占用这么高,赶紧查”。...再后面,出过几次OOM的问题,普遍增加了容器限额 Limits,出现了好几个业务服务是内存小怪兽,因此如果不限制的话,服务过度占用会导致驱逐,因此反馈语也就变成了:“为什么你们的服务内存占用这么高,老被...top命令 小TIPS: RSS、VSZ指标相关的参数含义: RSS是Resident Set Size(常驻内存大小)的缩写,用于表示进程使用了多少内存(RAM中的物理内存),RSS不包含已经被换出的内存...,然而我们发现用户当前进程所占用的内存才2.3G 左右。

    3.6K42

    centos7 top命令_linux chmod命令

    大家好,又见面了,我是你们的朋友全栈君。 top命令 Linux top命令用于实时显示 process 的动态。...负值表示高优先级,正值表示低优先级 VIRT:进程虚拟内存的大小,只要是进程申请过的内存,即便还没有真正分配物理内存,也会计算在内;VIRT=SWAP+RES (单位kb) RES:进程实际使用的物理内存大小...memory usage 虚拟内存 1.进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 2.假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量...RES:resident memory usage 常驻内存 1.进程当前使用的内存大小,但不包括swap out 2.包含其他进程的共享 3.如果申请100m的内存,实际使用10m,它只增长10m,与...VIRT相反 4.关于库占用内存的情况,它只统计加载的库文件所占内存大小 SHR:shared memory 共享内存 1.除了自身进程的共享内存,也包括其他进程的共享内存 2.虽然进程只使用了几个共享库的函数

    82220
    领券