예를 들어서 var pData : pointer; 변수에 할당된 메모리를 해제하는데 이것이 멀티 스레드 상황에서 다른 스레드에 의해서 사용 중이라거나, 또는 재사용되면 안되는 경우라고 하겠습니다. 이때 단순히 TLazyRelease.Release(pData)를 하면, 당장 메모리 해제는 일어나지 않지만, 언젠가는 결국 메모리에서 사라집니다. (실제로는 클래스가 아닌 객체의 메소드를 실행해야 합니다.)
가비지 컬렉션처럼 레퍼런스 카운터 등을 이용하면 그러한 문제들을 쉽게 벗어날 수 있겠지만, TLazyRelease 클래스가 보다 쉽고 직관적이며 성능면에서 이득이 많습니다. (다소 메모리는 낭비 되겠지만..)
Clear() 메소드는 자원을 사용하는 모든 스레드를 멈춘 뒤에 사용하는 것이 좋습니다. 프로그램이 종료 되기 전에 사용 된 메모리를 되돌려 놓기 위한 용도입니다. 실행하지 않아도 알아서 해제는 됩니다.
소스: http://code.google.com/p/ryulib4delphi/source/browse/trunk/XE2/LazyRelease.pas
Class To DLL - 델파이 클래스를 Dll로 포팅해주는 프로그램 (0) | 2013.07.14 |
---|---|
LZMA for Delphi (0) | 2013.01.21 |
JsonFormatter unit 추가 (0) | 2012.08.02 |
A Simple thread class that can change stack size for it (0) | 2012.07.01 |
DynamicQueue unit (0) | 2012.06.28 |