办公室

查找并修复Windows 10/8/7中的内存泄漏

三分钟恢复删除的视频文件

三分钟恢复删除的视频文件

目录:

Anonim

由于内存分配错误, 内存泄漏 是计算机程序中的资源错位。当没有使用的RAM位置仍未释放时,会发生这种情况。内存泄漏不应该与空间泄漏相混淆,这是指使用更多内存而不是必要的程序。据说Windows 10/8/7系统上的内存泄漏发生在内存不能被访问时,即使没有被使用。

Windows 10中的内存泄漏

在开始之前,您应该知道内存泄漏是调试的软件问题 - 例如在Java,JavaScript,C / C ++,Windows等中。不需要物理替换RAM或硬盘。

为什么它很糟糕

很明显,内存泄漏是不好的,因为它是一个缺陷,是系统中的一个缺陷。但是让我们来看看它是如何影响系统的:

  1. 由于即使不使用也不释放内存,因此会导致内存耗尽。
  2. 内存耗尽会导致软件老化。
  3. 可用内存减少导致系统响应时间增加和性能下降
  4. 未经检查的内存泄漏最终可能导致应用程序崩溃。

为了识别内存泄漏,程序员需要访问源代码该程序

查找泄漏

为了解决问题,我们需要首先识别它。查找内存泄漏的基本步骤如下:

  1. 确认:确定是否发生泄漏。
  2. 查找内核模式内存泄漏:查找由内核模式驱动程序组件引起的泄漏。
  3. 查找用户模式内存泄漏:查找由用户模式驱动程序或应用程序引起的泄漏

内存分配

应用程序分配RAM的方式有所不同。如果使用后空间没有释放,则不管分配的方式如何,都会发生内存泄漏。一些常见的分配模式是:

  1. 用于堆内存分配的HealAlloc函数。 C / C ++运行时等价物是malloc和new。
  2. 用于从操作系统直接分配的VirtualAlloc函数。
  3. 用于保存应用程序内核内存的Kernel32 API。例如,CreateFile,CreateThread。
  4. User32 API和Gdi32 API。

防止内存泄漏

我们都知道预防胜于治疗,因此以下是防止内存泄漏的一些方法。

监控习惯

您需要留意个别程序和应用程序的RAM使用异常情况。你可以通过按 CTRL + SHIFT + ESC 来进入Windows任务管理器,并添加诸如句柄,用户对象,GDI对象等列。

这将帮助你轻松地监视资源使用情况。

用于诊断内存泄漏的Microsoft工具

各种工具可诊断各种分配模式下的内存泄漏:

  1. Application Verifier诊断堆泄漏
  2. UMDH(Windows调试工具的一个组件)通过监视堆内存分配来诊断各个进程的泄漏。
  3. 跟踪捕获用于全面分析RAM使用情况
  4. Xperf也跟踪堆分配模式
  5. CRT调试堆不仅跟踪堆分配,而且还支持编码实践以最大限度地减少泄漏。检测器调试代码中的内存泄漏
  6. 使用技巧

使用内核

  1. HANDLE 和其他用于Win32资源和堆分配的智能指针获取内核分配的自动资源管理类ATL库。借助于
  2. _com_ptr_t _bstr_t
  3. _variant_t封装“智能指针”内的COM接口指针监视.NET代码是否有不正常的内存使用情况。 避免使用函数的多个退出路径,以便在函数结束时将大部分块中的变量从变量中释放。 仅使用本机异常释放_finally块中的所有分配后。将所有堆分配到智能指针中,以便使用C ++异常。在重新初始化或丢弃PROPVARIANT对象之前,始终调用
  4. PropVariantClear
  5. 函数。
  6. 解决Windows中的内存泄漏
  7. 就像防止内存泄漏的各种方法一样,有各种方法可以阻止内存泄漏。 1]关闭进程并重新启动 如果您发现不必要的进程占用了太多RAM,则可以在任务管理器中结束进程。您将需要重新启动设备,以便释放的空间可供其他进程使用。没有重新启动内存泄漏问题将无法解决。运行时间代理是一个特殊的过程,它会让PC变慢。

2>内存诊断工具

访问Windows内置内存诊断工具:

保存所有重要工作

Win + R

  1. 运行
  2. 窗口中键入命令 mdsched.exe 。重新启动,执行基本扫描或进入` 高级 `选项,如`
  3. 测试混合 `或` 合格计数 `。
  4. F10
  5. 开始测试这些仍然是临时性的修正 3]检查驱动程序更新过时的驱动程序导致内存泄漏。保持所有驱动程序更新:Win + R 并打开
  6. 运行 窗口。键入 devmgmt.msc

,然后按Enter键。它会将您带到

设备管理器

  1. 检查过时的驱动程序并全部更新 对于您可能错过的更新,请检查Windows Update。 这很简单。 4]优化性能 调整Windows的性能将管理所有事情,包括处理器调度和内存使用情况,以阻止内存泄漏。请按照以下步骤操作: 右键单击` 此PC `并在左侧窗格中选择`高级
  2. `设置

高级

`选项卡,转至`

性能

  1. `,然后选择`设置`。选中调整以获得最佳性能
  2. ,然后点击确定重新启动并检查问题是否已解决如果此简单解决方案无效,请尝试下一个解决方案。 5]禁用启动时运行的程序禁用令人讨厌的程序为要摆脱内存泄漏问题的唯一方法。转到任务管理器并禁用故障排除程序。如果您不知道哪些程序会产生问题,请执行以下操作:
  3. 转到`任务管理器`。 转到`启动
  4. `。

6]磁盘碎片整理硬盘

虽然Windows 10会自动为您执行此操作,但您可能需要偶尔对硬盘进行碎片整理以优化性能:

  1. 转至`此PC `或`
  2. 我的电脑`。右键单击系统硬盘驱动器(通常为C:驱动器)。
  3. 转至<

属性

  1. 下的工具`,然后选择`优化`。选择要碎片整理的驱动器并选择`
  2. 分析
  3. `。 >在新碎片之后重新启动计算机。 7]关闭时的ClearPage文件现在变得越来越复杂 - 但不用担心。以下是在每次关机时清除页面文件的方法:在搜索上键入 regedit 以启动注册表编辑器。输入此路径: HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Control Session Manager Memory Management
  4. 更改 ClearPageFileAtShutDown为`1`。保存更改并重新启动设备

这应该做到这一点

9]禁用Superfetch

此Windows服务通过最小化启动时间来优化性能。它让Windows管理RAM的使用。禁用Superfetch后的生活并不方便,但如果必须的话,则可以这样做。至少试试这个问题来隔离问题:

  1. 搜索 services.msc 并转到服务管理器。
  2. 查找` Superfetch
  3. `,然后右键单击它至 属性
  4. `。

选择`

停止

`。

  1. 从下拉菜单中选择` 禁用 `服务
  2. 重新启动电脑并检查性能是否有所提高。如果此功能无效,启用Superfetch 10]检查恶意软件使用第三方防病毒软件或Windows 10的内部Windows Defender扫描并清除恶意软件。确保防病毒软件已更新,以支持您的操作系统,使其最终不会成为内存泄漏的原因。您可能需要找到或防止内存泄漏的每个解决方案都在这里。您可以在MSDN和Microsoft上阅读有关内存泄漏的更多信息。