Cómo encontrar y reparar las fugas de memoria en Windows 10/8/7
UNA Pérdida de memoria es una mala colocación 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 inédita. 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 para la depuración, por ejemplo, en Java, JavaScript, C / C ++, Windows, etc. No es necesario reemplazar físicamente la RAM o el disco duro.
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:
- Dado que la memoria no se libera incluso cuando no está en uso, se produce un agotamiento de la memoria..
- El agotamiento de la memoria provoca el envejecimiento del software..
- La memoria disponible reducida reduce el tiempo de respuesta y el rendimiento del sistema..
- La pérdida de memoria no comprobada puede provocar el bloqueo de una aplicación.
Para identificar una pérdida de memoria, un programador debe tener acceso al código fuente del programa.
Localizar la fuga
Para resolver un problema, primero debemos identificarlo. Los pasos básicos para localizar una pérdida de memoria son:
- Afirmación: Determinar si se ha producido una fuga.
- Buscando una fuga de memoria en modo kernel: Localización de una fuga causada por un componente del controlador en modo kernel.
- Buscando la fuga de memoria en modo usuario: Localización de una fuga causada por un controlador o aplicación en modo usuario.
Asignación de memoria
Hay 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 comunes de asignación son:
- Función HealAlloc para la asignación de memoria del montón. Los equivalentes de tiempo de ejecución de C / C ++ son malloc y new..
- Función VirtualAlloc para asignación directa desde SO.
- API de Kernel32 para mantener la memoria del kernel para la aplicación. Ejemplo, CreateFile, CreateThread.
- User32 APIs y Gdi32 APIs.
Prevención de fugas de memoria
Todos sabemos que es mejor prevenir que curar, así que aquí hay algunas formas de prevenir una pérdida de memoria..
Hábitos de monitoreo
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 agregue las columnas como Handles, User Objects, GDI Objects, etc..
Esto te ayudará a monitorear fácilmente el uso de recursos.
Herramientas de Microsoft para diagnosticar fugas de memoria.
Varias herramientas diagnostican fugas de memoria para varios modos de asignación:
- Application Verifier diagnostica fugas en el montón.
- 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.
- Captura de rastreo para un análisis exhaustivo del uso de RAM.
- Xperf también rastrea patrones de asignación de pila.
- CRT Debug Heap no solo realiza un seguimiento de las asignaciones del montón, sino que también permite las prácticas de codificación para minimizar las fugas..
- El detector de fugas de memoria de JavaScript elimina errores de memoria en los códigos.
Consejos de uso
- Usar kernel ENCARGARSE DEy otros punteros inteligentes para recursos Win32 y asignaciones de pila.
- Obtenga clases para la administración automática de recursos para las asignaciones de kernel de la biblioteca ATL. El estándar de C ++ tiene auto_ptr para asignaciones de pila.
- Encapsule los punteros de la interfaz COM dentro de los "punteros inteligentes" con la ayuda de _com_ptr_t o _bstr_t o _variant_t.
- Monitorea el código .NET por uso anormal de memoria.
- Evite múltiples rutas de salida para que las funciones puedan liberarse de las variables en la mayoría de los bloques al final de una función.
- Use excepciones nativas solo después de liberar todas las asignaciones en el bloque _finalmente. Envuelva todas las asignaciones de montón y manejar en punteros inteligentes para usar las excepciones de C ++.
- Siempre llama al PropVariantClear Función antes de reinicializar o descartar un objeto PROPVARIANT.
Solución de problemas de pérdida de memoria en Windows
Al igual que las diversas formas de prevenir las fugas de memoria, existen varias formas de detenerlas..
1] Cerrar procesos y reiniciar..
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 problema de pérdida de memoria de reinicio no se resolverá. Un proceso en particular que tiene errores para ralentizar la PC es Runtime Broker. Probar si deshabilitar solo funciona.
2] Herramientas de diagnóstico de memoria
Para acceder a la Herramienta de diagnóstico de memoria incorporada para Windows:
- Guarda todos tus trabajos importantes.
- prensa Win + R para abrir el correr ventana.
- Escribe el comando mdsched.exe en el correr ventana.
- Reiniciar la PC.
- Después de reiniciar, realice un escaneo básico o vaya a 'Avanzado'opciones como'Mezcla de prueba'o'Cuenta de pases'.
- prensa F10 para comenzar la prueba.
Estos son todavía arreglos temporales.
3] Comprobar actualizaciones de controladoresLos controladores obsoletos causan pérdidas de memoria. Mantenga todos los controladores actualizados:
- prensa Win + R y abre el correr ventana. Tipo devmgmt.msc y presione Enter. Te llevará a la Administrador de dispositivos.
- Compruebe si hay controladores obsoletos y actualizarlos todos.
- Para actualizaciones que puede haber perdido, verifique en Windows Update.
Esto era simple.
4] Optimizar el rendimiento
El ajuste de Windows para el rendimiento administrará todo, incluyendo la programación del procesador y el uso de la memoria para detener las fugas de memoria. Sigue estos pasos:
- Haga clic derecho en 'Esta pc'y seleccione'Avanzado'configuración en el panel izquierdo.
- Bajo la 'Avanzado'pestaña, vaya a'Actuación', seguido por 'Ajustes'.
- ComprobarAjustarse para un mejor desempeño'y haga clic DE ACUERDO.
- Reinicia y comprueba si el problema está resuelto..
Si esta solución simple no funcionó, pruebe la siguiente solución.
5] Deshabilitar los programas que se ejecutan en el 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 deshabilite el programa de problemas. Si no sabe qué programas están creando el problema, haga esto:
- Ir 'Administrador de tareas'.
- Ir 'Puesta en marcha'.
- Deshabilita los programas de inicio que no necesitas ejecutar por defecto.
6] disco duro Defrag
Aunque Windows 10 hace esto automáticamente, es posible que deba desfragmentar los discos duros ocasionalmente para optimizar el rendimiento:
- Ir 'Esta pc'o'Mi computadora'.
- Haga clic con el botón derecho en el disco duro del sistema (generalmente la unidad C:).
- Ir 'Herramientas' debajo 'Propiedades'y seleccione'Optimizar'.
- Seleccione la unidad para desfragmentar y seleccione 'Analizar'.
Reinicie su computadora después de la nueva fragmentación.
7] ClearPage File en el cierre
Se está volviendo complejo ahora, pero no te preocupes. Aquí le indicamos cómo borrar el archivo de página en cada cierre:
- Tipo regeditar en Búsqueda para iniciar el Editor del Registro.
- Ingrese este camino: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerGestión de memoria
- Cambiar el valor de ClearPageFileAtShutDown a '1'.
- Guarda los cambios y reinicia el dispositivo..
Esto deberia hacerlo.
9] Deshabilitar Superfetch
Este servicio de Windows optimiza el rendimiento al minimizar el tiempo de arranque. Permite a Windows gestionar el uso de RAM. La vida después de deshabilitar Superfetch no es conveniente, pero hazlo si es necesario. Al menos intente esto solo para aislar el problema:
- Buscar servicios.msc y vaya al Gerente de Servicios.
- Buscar 'Superfetch'y haga clic derecho para ir a'Propiedades'.
- Seleccione 'Detener'.
- También 'Inhabilitar'el servicio del menú desplegable.
- Reinicie la PC y compruebe si el rendimiento ha mejorado..
Habilitar Superfetch si este no funcionó.
10] Compruebe si hay malware
Use un software antivirus de terceros o el Windows Defender interno de Windows 10 para escanear y eliminar el malware. Asegúrese de que el antivirus esté actualizado para que sea compatible con su sistema operativo para que no se convierta en el motivo de la pérdida de memoria.
Todas las soluciones que pueda necesitar para encontrar o prevenir las fugas de memoria están aquí. Puede leer más sobre las fugas de memoria en MSDN y Microsoft.