Encuentra y repara pérdidas de memoria en Windows 10

Una pérdida de memoria es una pérdida de recursos en un programa de computadora debido a una asignación de memoria defectuosa. Ocurre cuando una ubicación de RAM que no está en uso permanece sin publicar. Una pérdida de memoria no debe confundirse con una pérdida de espacio, que se refiere a un programa que utiliza más RAM de la necesaria. Se dice que se produjo una pérdida de memoria en un sistema Windows 10/8/7 cuando la memoria simplemente no es accesible a pesar de no estar en uso.

Fugas de memoria en Windows 10

Antes de comenzar, debe saber que la pérdida de memoria es un problema de software que se debe depurar, por ejemplo, en Java, JavaScript, C / C ++, Windows, etc. No es necesario reemplazar físicamente la RAM o el disco duro.

Pérdida de memoria en Windows 10

Porque es malo

Es obvio que una pérdida de memoria es mala porque es un error, una falla en el sistema. Pero averigüemos cómo afecta exactamente al sistema:

  1. Dado que la memoria no se libera incluso cuando no está en uso, se agota la memoria.
  2. El agotamiento de la memoria da como resultado el envejecimiento del software.
  3. La memoria disponible reducida conduce a un mayor tiempo de respuesta y un rendimiento deficiente del sistema.
  4. La pérdida de memoria no verificada puede eventualmente provocar el bloqueo de una aplicación.

Para identificar una fuga de memoria, un programador debe tener acceso al código fuente del programa.

Localizando la fuga

Para resolver un problema, primero debemos identificarlo. Los pasos básicos para localizar una pérdida de memoria son:

  1. Afirmación : determinar si se ha producido una fuga.
  2. Encontrar pérdida de memoria en modo kernel : localizar una pérdida causada por un componente de controlador en modo kernel.
  3. Encontrar fuga de memoria en modo de usuario : localización de una fuga causada por un controlador o aplicación en modo de usuario.

Asignación de memoria

Existen diferentes modos en los que las aplicaciones asignan RAM. Si el espacio no se libera después de su uso, la pérdida de memoria se producirá independientemente del modo de asignación. Algunos patrones de asignación comunes son:

  1. Función HealAlloc para la asignación de memoria del montón. Los equivalentes en tiempo de ejecución de C / C ++ son malloc y new.
  2. Función VirtualAlloc para asignación directa desde SO.
  3. API de Kernel32 para mantener la memoria del kernel para la aplicación. Ejemplo, CreateFile, CreateThread.
  4. API de User32 y API de Gdi32.

Prevenir pérdidas de memoria

Todos sabemos que es mejor prevenir que curar, así que aquí hay algunas formas de prevenir una pérdida de memoria.

Seguimiento de hábitos

Fugas de memoria en Windows 10

Debe estar atento al uso anormal de RAM por parte de programas y aplicaciones individuales. Puede ir al Administrador de tareas de Windows presionando CTRL + MAYÚS + ESC y agregar las columnas como Controles, Objetos de usuario, Objetos GDI, etc.

Esto le ayudará a controlar fácilmente el uso de recursos.

Herramientas de Microsoft para diagnosticar pérdidas de memoria

Varias herramientas diagnostican pérdidas de memoria para varios modos de asignación:

  1. Application Verifier diagnostica las fugas de pila.
  2. UMDH (un componente de las herramientas de depuración de Windows) diagnostica fugas para procesos individuales al monitorear las asignaciones de memoria del montón.
  3. Trace Capture para un análisis exhaustivo del uso de RAM.
  4. Xperf también rastrea los patrones de asignación de montones.
  5. CRT Debug Heap no solo rastrea las asignaciones de montón, sino que también permite prácticas de codificación para minimizar las fugas.
  6. JavaScript Memory Leak Detector depura las pérdidas de memoria en los códigos.

Consejos de uso

  1. Use kernel HANDLE sy otros punteros inteligentes para los recursos de Win32 y las asignaciones de montón.
  2. Obtenga clases para la administración automática de recursos para asignaciones de kernel de la biblioteca ATL. El estándar C ++ tiene auto_ptr para las asignaciones de montón.
  3. Encapsule los punteros de la interfaz COM dentro de "punteros inteligentes" con la ayuda de _com_ptr_t o _bstr_t o _variant_t .
  4. Supervise el código .NET para detectar un uso anormal de la memoria.
  5. Evite múltiples rutas de salida para las funciones para permitir que las asignaciones se liberen de las variables en la mayoría de los bloques al final de una función.
  6. Use excepciones nativas solo después de liberar todas las asignaciones en el bloque _finally. Envuelva todo el montón y maneje las asignaciones en punteros inteligentes para usar las excepciones de C ++.
  7. Llame siempre a la función PropVariantClear antes de reinicializar o descartar un objeto PROPVARIANT.

Solución de problemas de fugas de memoria en Windows

Al igual que las diversas formas de prevenir pérdidas de memoria, existen varias formas de detener las pérdidas de memoria. Pero antes de comenzar, recuerde crear primero un punto de restauración del sistema.

1] Cierre los procesos y reinicie.

Si ve que un proceso innecesario está ocupando demasiada RAM, puede finalizar el proceso en el Administrador de tareas. Deberá reiniciar el dispositivo para que el espacio liberado esté disponible para que lo utilicen otros procesos. Sin un reinicio, el problema de pérdida de memoria no se resolverá. Un proceso en particular que tiene errores para ralentizar la PC es Runtime Broker. Pruebe si deshabilitar eso solo funciona.

2] Herramientas de diagnóstico de memoria

Diagnóstico de memoria de Windows

Para acceder a la herramienta de diagnóstico de memoria incorporada para Windows:

  1. Guarde todo su trabajo importante.
  2. Presione Win + R para abrir la ventana Ejecutar .
  3. Escriba el comando mdsched.exe en la ventana Ejecutar .
  4. Reinicie la PC.
  5. Después de un reinicio, realice un escaneo básico o vaya a las opciones ' Avanzadas ' como ' Prueba de mezcla ' o ' Recuento de pasadas '.
  6. Presione F10 para iniciar la prueba.

Estas todavía son soluciones temporales.

3] Buscar actualizaciones de controladores

Actualizar el software del controlador

Los controladores obsoletos provocan pérdidas de memoria. Mantenga todos los controladores actualizados:

  1. Presione Win + R y abra la ventana Ejecutar . Escriba devmgmt.msc y presione Entrar. Lo llevará al Administrador de dispositivos .
  2. Busque controladores desactualizados y actualícelos todos.
  3. Para conocer las actualizaciones que puede haber perdido, consulte Windows Update.

Esto fue sencillo.

4] Optimizar el rendimiento

Ajustarse para un mejor desempeño

El ajuste de Windows para el rendimiento gestionará todo, incluida la programación del procesador y el uso de la memoria para detener las pérdidas de memoria. Sigue estos pasos:

  1. Haga clic derecho en ' Esta PC ' y seleccione la configuración ' Avanzada ' en el panel izquierdo.
  2. En la pestaña ' Avanzado ', vaya a ' Rendimiento ', seguido de ' Configuración '.
  3. Marque " Ajustar para obtener el mejor rendimiento " y haga clic en Aceptar .
  4. Reinicie y verifique si el problema está resuelto.

Si esta sencilla solución no funcionó, pruebe la siguiente solución.

5] Desactive los programas que se ejecutan al iniciar

Programas de inicio

Deshabilitar los programas problemáticos es la única forma de deshacerse del problema de pérdida de memoria. Vaya al Administrador de tareas y desactive el programa problemático. Si no sabe qué programas están creando el problema, haga lo siguiente:

  1. Vaya a ' Administrador de tareas '.
  2. Vaya a ' Inicio '.
  3. Desactive los programas de inicio que no necesita ejecutar de forma predeterminada.

6] Desfragmentar disco duro

Desfragmentación de disco

Aunque Windows 10 hace esto automáticamente, es posible que deba desfragmentar los discos duros ocasionalmente para optimizar el rendimiento:

  1. Vaya a " Esta PC " o " Mi PC ".
  2. Haga clic con el botón derecho en el disco duro del sistema (generalmente unidad C :).
  3. Vaya a ' Herramientas ' en ' Propiedades ' y seleccione ' Optimizar '.
  4. Seleccione la unidad para desfragmentar y seleccione ' Analizar '.

Reinicie su computadora después de la nueva fragmentación.

7] Archivo ClearPage al apagar

Se está volviendo complejo ahora, pero no se preocupe. Aquí se explica cómo borrar el archivo de página cada vez que se apaga:

  • Escriba regedit en Buscar para iniciar el Editor del registro.
  • Ingrese esta ruta:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager Gestión de memoria
  • Cambie el valor de ClearPageFileAtShutDown a '1'.
  • Guarde los cambios y reinicie el dispositivo.

Esto debería ser suficiente. Recuerde que su proceso de apagado llevará un poco más de tiempo.

9] Desactivar Superfetch

Este servicio de Windows optimiza el rendimiento minimizando el tiempo de arranque. Permite a Windows administrar el uso de RAM. La vida después de deshabilitar Superfetch no es conveniente, pero hágalo si es necesario. Al menos intente esto solo para aislar el problema:

  1. Busque services.msc y vaya al Administrador de servicios.
  2. Busque ' Superfetch ' y haga clic derecho para ir a ' Propiedades '.
  3. Seleccione ' Detener '.
  4. También ' Deshabilitar ' el servicio desde el menú desplegable.
  5. Reinicie la PC y verifique si el rendimiento ha mejorado.

Habilite Superfetch si este no funcionó.

10] Compruebe si hay software malicioso

Use un software antivirus de terceros o Windows Defender interno de Windows 10 para escanear y eliminar el malware. Asegúrese de que el antivirus esté actualizado para ser compatible con su sistema operativo, de modo que no termine convirtiéndose en el motivo de la pérdida de memoria.

Todas las soluciones que pueda necesitar para encontrar o prevenir pérdidas de memoria están aquí. Puede leer más sobre pérdidas de memoria en MSDN y Microsoft.

Original text


Fugas de memoria en Windows 10