"누수"메모리가 아니며 "누설"상태 일 수 있습니다. 응용 프로그램이 메모리를 해제 할 수 없으면 메모리는 누출되지 않습니다. 예 : 포인터가 사라진 후에.
개체가 만들어지고 개체가 소멸 될 때 해제 될 때 메모리가 요구됩니다 (개체가 새 개체로 덮어 쓰면 손실됩니다). 누출은 메모리가 해제되지 않는 경우입니다 (응용 프로그램을 닫은 후). 응용 프로그램 실행 중에 해제되지 않는 개체의 경우 일 수 있습니다. 그러나 개체가 목록 또는 개체 배열에 추가되면 목록/배열은 계속 증가합니다 (덮어 쓰기 대신). 개체가 응용 프로그램이 닫힐 때까지 자동으로 해제되는 응용 프로그램이지만 응용 프로그램이 종료 될 때까지는 응용 프로그램이 닫히지 않을 때 FastMM은 메모리가 유출되지 않았기 때문에 아무 것도보고하지 않습니다 (응용 프로그램을 닫을 때 모두 freeed되었습니다)
메모리 프로파일 러는 현재 메모리에있는 각 객체의 수와 Objects 클래스 (이 작업을 수행하는 AQ Time도 사용합니다). 1 시간/2 시간/3 시간 후에 메모리 프로파일을 확인해야합니다. 대부분의 장기 실행 애플 리케이션 (내가 아는 모든 것)은 상당히 일정한 (장기적인) 메모리 요구 사항을 가지고 있으며, 메모리에있는 각 오브젝트도 상당히 일정하게 유지됩니다. 분명히 애플 리케이션이 바쁠 때 스파이크가있을 것이지만 이들은 안정된 수준으로 되돌아 와야합니다. 개체 수가 지속적으로 증가하는지 확인하십시오.
내 생각 엔 폼이나 응용 프로그램이 부모 인 상태에서 응용 프로그램을 동적으로 만들거나, 목록의 끝에 추가하고, 해제하지 않는 것입니다. 앱이 닫힐 때까지 개체가 메모리에 있지만 새 개체마다 더 많은 메모리가 필요합니다.
고맙습니다. JamesB. 나는 AQ Time을 다운로드하고 그것이 더 많은 정보를 제공하는지 확인합니다. –
getheapstatus의 문제점은 무엇입니까? –
"누출은 메모리가 절대로 해제되지 않은 경우입니다. (응용 프로그램을 닫은 후)"- 버그가있는 드라이버 나 별도의 응용 프로그램 (예 : 응용 프로그램)을 사용하지 않고 합리적으로 현대적인 OS에서 가능하지 않다고 생각합니다. 그 응용 프로그램과 대화하여 누수를 유발합니다.) 프로세스가 종료되면 할당 된 모든 메모리가 해제됩니다. –