为什么 Windows 占用内存这么大?

在 Windows 上从命令行诊断是哪些进程和服务吃掉了内存,并验证修复效果。

Windows进程svchost 系统进程系统服务内存PowerShell低风险
先用 PowerShell 按内存占用排出前 15 名进程,看看到底是什么在吃内存。

快速开始

Windows 内存占用过高时,电脑会明显变卡、程序响应迟钝,磁盘也可能因为频繁换页而不停转动。好消息是:不用装任何软件,在命令行里就能揪出元凶。本指南带你从定位内存大户开始,一步步验证系统恢复正常。

症状

?电脑整体变卡、程序打开很慢、任务管理器显示内存接近满载,或者明明没干什么重活磁盘却一直在响。

找出占用内存最多的进程

先别急着改动任何东西,用 PowerShell 按内存占用排出前 15 名进程。这样能判断是某个程序失控,还是很多小程序 collectively 吃掉了内存。如果某个进程独占鳌头,直接关掉或排查它;如果占用分散,接着查看后台服务。

用一条 PowerShell 管道按内存和 CPU 时间对运行中的进程排序。

命令
$ Get-Process | Sort-Object WS -Descending | Select-Object -First 15 Name, Id, @{n='Mem(MB)';e={[math]::Round($_.WS/1MB,1)}}, @{n='CPU(s)';e={[math]::Round($_.CPU,1)}} | Format-Table -AutoSize

查看 svchost.exe 里面跑了哪些服务

任务管理器里常看到多个 svchost.exe 占用不少内存,但每个实例承载的服务不同。列出每个实例内的服务,才能知道到底是哪个 Windows 组件在消耗内存,而不是笼统地怪罪系统。

用 tasklist /SVC 列出每个进程(尤其是 svchost.exe)内部承载的服务。

命令
$ tasklist /SVC /FI "IMAGENAME eq svchost.exe"

检查页面文件使用情况,判断内存是否告急

物理内存不够时,Windows 会把数据挪到页面文件。查询它的当前用量和峰值用量:峰值很高说明系统已经频繁依赖磁盘换页,这解释了内存还没耗尽电脑就开始变卡的原因;峰值很低则说明问题多半出在个别失控的进程上。

查询 Win32_PageFileUsage 看页面文件多大、当前用了多少、峰值多少,判断电脑卡顿是不是内存不够。

命令
$ Get-CimInstance Win32_PageFileUsage | Select-Object Name, AllocatedBaseSize, CurrentUsage, PeakUsage

确认可疑程序确实在运行

根据内存排行锁定可疑程序后,先确认它此刻确实在运行,并记下它的 PID。这一步能保证你操作的是正确的进程——尤其是当该程序会启动多个进程的时候——然后再去关闭或重启它。

用 tasklist 配合 findstr 或 /FI 过滤器,快速确认某程序是否在运行并拿到它的进程 ID。

命令
$ tasklist | findstr /i chrome    ::  or filtered directly:  tasklist /FI "IMAGENAME eq chrome.exe"

验证系统恢复正常

关闭或重启吃内存的程序后,再按 CPU 排一次最重的进程。健康的系统不会有某个进程长期独占资源,之前膨胀的那个进程也不应再出现在内存排行的顶部。

Windows用 PowerShell 找出最吃 CPU 的进程低风险步骤 5可选

用 Get-Process 配合 Sort-Object 按 CPU 时间给进程排名。

命令
$ Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, Id, CPU

用可靠性监视器检查相关崩溃记录

打开可靠性监视器,看看内存吃紧的时间段是否伴随应用崩溃或驱动故障。修复之后时间轴上不再出现新错误,就说明内存问题真正解决了,而不是转移到了别处。

Windows一条命令打开 Windows 可靠性监视器低风险步骤 6可选

perfmon /rel 直接打开稳定性时间线,看看最近是哪个程序或驱动在崩溃。

命令
$ perfmon /rel
!不要随手结束你不认识的进程——其中不少是 Windows 系统服务。先通过 svchost 服务列表确认进程里跑的是什么,再决定是否终止。

如何确认已解决

重新查看最重的进程排行并打开可靠性监视器:不应有单个进程长期独占资源,修复后时间轴上也不应出现新错误。

来源

  • tasklist
    Microsoft Learn · vendor-doc · 2026-09-17
    依据: Syntax includes /svc which 'Lists all the service information for each process' — i.e. services hosted inside each process.
  • TaskList — List processes running on the machine
    SS64 · technical · 2026-09-17
    依据: Documents /SVC: 'List services hosted within each process' — useful for identifying the services inside svchost.exe instances.
  • Win32_PageFileUsage class
    Microsoft Learn · vendor-doc · 2026-09-17
    依据: Win32_PageFileUsage exposes AllocatedBaseSize (current MB), CurrentUsage and PeakUsage for each page file on the system.
  • Start Reliability Monitor
    Microsoft Learn · vendor-doc · 2026-09-17
    依据: Instructions state you can start Reliability Monitor "in its own window by typing perfmon /rel".
  • Get-Process - SS64
    SS64 · technical · 2026-09-17
    依据: Shows sorting processes by working set and other memory-oriented examples.
  • perfmon
    Microsoft Learn · vendor-doc · 2026-09-17
    依据: Lists the /rel switch that starts Reliability Monitor with a specific report.
  • Get-Process
    Microsoft Learn · vendor-doc · 2026-09-17
    依据: Documents Get-Process objects and their WS and CPU properties.

最后验证: 2026-09-21

相关指南