Oficina

Buscar y corregir fugas de memoria en Windows 10/8/7

? Cómo ??????? ??????? ??? en Windows 10, 8, 7 2020 (Con y sin programas)

? Cómo ??????? ??????? ??? en Windows 10, 8, 7 2020 (Con y sin programas)

Tabla de contenido:

Anonim

A Memory Leak es una extrapolación de recursos en un programa de computadora debido a una asignación de memoria defectuosa. Sucede cuando una ubicación de RAM que no está en uso permanece inédita. Una fuga de memoria no debe confundirse con una fuga de espacio, que se refiere a un programa que usa más RAM de la necesaria. Se dice que tuvo lugar una pérdida de memoria en un sistema Windows 10/8/7 cuando la memoria 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 depurar, por ejemplo, en Java, JavaScript, C / C ++, Windows, etc. No es necesario reemplazar físicamente la memoria RAM o el disco duro.

¿Por qué es malo?

Es obvio un recuerdo la fuga es mala porque es un error, una falla en el sistema. Pero averigüemos cómo afecta exactamente el sistema:

  1. Dado que la memoria no se libera aunque no esté en uso, se reduce la memoria.
  2. El agotamiento de la memoria da como resultado el envejecimiento del software.
  3. Memoria disponible reducida aumenta el tiempo de respuesta y el rendimiento del sistema.
  4. La pérdida de memoria no comprobada puede provocar el bloqueo de una aplicación.

Para identificar una pérdida de memoria, un programador necesita tener acceso al código fuente de el programa.

Localizando la fuga

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

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

Asignación de memoria

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

  1. función HealAlloc para la asignación de la memoria del montón. Los equivalentes de tiempo de ejecución de C / C ++ son malloc y nuevos.
  2. Función VirtualAlloc para la asignación directa desde el SO.
  3. Kernel32 API para mantener la memoria del núcleo para la aplicación. Ejemplo, CreateFile, CreateThread.
  4. API de usuario32 y API de Gdi32.

Prevención de pérdidas de memoria

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

Hábitos de supervisión

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

Esto le 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:

  1. Application Verifier diagnostica fugas de montón.
  2. UMDH (un componente de Herramientas de depuración de Windows) diagnostica fugas para procesos individuales mediante el monitoreo de asignaciones de memoria.
  3. Trace Capture para un análisis exhaustivo del uso de la RAM.
  4. Xperf también rastrea los patrones de asignación de los montones.
  5. CRT Debug Heap no solo rastrea las asignaciones de los montones, sino que también habilita las prácticas de codificación para minimizar las fugas. El detector depura las fugas de memoria en los códigos.
  6. Sugerencias de uso

Utilice kernel

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

Al igual que las diversas formas de evitar fugas de memoria, existen varias formas de evitar fugas de memoria.

1] Cierre los procesos y reinícielo.

Si ve que un proceso innecesario consume demasiada memoria RAM, puede finalizar el proceso en el Administrador de tareas. Tendrá que reiniciar el dispositivo para que el espacio liberado esté disponible para el uso de otros procesos. Sin un problema de pérdida de memoria de reinicio no se resolverá. Un proceso particular que tiene errores para ralentizar la PC es Runtime Broker. Intente si la desactivación de eso solo funciona.

2] Herramientas de diagnóstico de memoria

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

Guarde todo su trabajo importante.

  1. Presione
  2. Win + R para abrir la ventana Ejecutar . Escriba el comando
  3. mdsched.exe en la ventana Ejecutar . Reinicie la PC.
  4. Después de reinicie, realice un escaneo básico o vaya a las opciones `
  5. Avanzado ` como ` Prueba mix ` o ` Pase cuenta `. Presione
  6. F10 para comenzar la prueba. Aún se trata de arreglos temporales.

3] Buscar actualizaciones de controladores

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

Presione

  1. Win + R y abra la ventana Ejecutar . Escriba devmgmt.msc y presione Entrar. Te llevará al Administrador de dispositivos . Verifica si hay controladores desactualizados y actualízalos a todos.
  2. Para las actualizaciones que podrías haber perdido, revisa la Actualización de Windows.
  3. Esto fue simple.

4] Optimizar el rendimiento

El ajuste de Windows para el rendimiento administrará todo, incluida la programación del procesador y el uso de memoria para detener las fugas de memoria. Siga estos pasos:

Haga clic con el botón derecho en `

  1. Esta PC ` y seleccione ` Configuración avanzada ` en el panel izquierdo. Bajo `
  2. Avanzado `pestaña, vaya a` Rendimiento `, seguido de` Configuración `. Compruebe`
  3. Ajuste para obtener el mejor rendimiento `y haga clic en Aceptar . Reinicie y verifique si el problema está resuelto.
  4. Si esta solución simple no funcionó, intente con la siguiente solución.

5] Deshabilite los programas que se ejecutan en el inicio

Deshabilitar los programas problemáticos es la única forma de deshacerse del problema de la fuga de memoria. Vaya al Administrador de tareas y desactive el programa de resolución de problemas. Si no sabe qué programas crean el problema, haga lo siguiente:

Vaya a `

  1. Administrador de tareas `. Vaya a `
  2. Inicio `. Deshabilite los programas de inicio que no necesita ejecutar de forma predeterminada.
  3. 6] Defrag Hard Drive

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

Vaya a `

  1. Esta PC ` o ` Mi PC `. Haga clic con el botón derecho en el disco duro del sistema (normalmente C: unidad).
  2. Vaya a `
  3. Herramientas `en` Propiedades `y seleccione` Optimizar `. Seleccione la unidad para desfragmentar y seleccione`
  4. 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í le mostramos cómo borrar el archivo de página en cada cierre:

Escriba

  1. regedit en la búsqueda para iniciar el Editor del registro. Ingrese esta ruta:
  2. HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management Cambie el valor de
  3. ClearPageFileAtShutDown a `1`. Guarde los cambios y reinicie el dispositivo.
  4. Esto debería hacerlo.

9] Desactivar Superfetch

Este servicio de Windows optimiza el rendimiento al minimizar el tiempo de arranque. Permite que Windows administre el uso de RAM. La vida después de deshabilitar Superfetch no es conveniente, pero hazlo si debes hacerlo. Al menos intente esto solo para aislar el problema:

Busque

  1. services.msc y vaya a Services Manager. Busque `
  2. Superfetch ` y haga clic con el botón derecho para ir a ` Propiedades `. Seleccione `
  3. Detener `. También `
  4. Deshabilite ` el servicio del menú desplegable. Reinicie la PC y verifique si el rendimiento ha mejorado.
  5. Habilite Superfetch si esta no funcionó.

10] Buscar malware

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

Aquí encontrará toda la solución que pueda necesitar para encontrar o evitar pérdidas de memoria. Puede leer más sobre fugas de memoria en MSDN y Microsoft.