자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

Delphi 폼 생성과 해제.

2019.09.29 19:59

엽기토끼이요 조회 수:489

안녕하세요. 저번에 질문을 올렸는데 이해가 안 되서 또 질문을 합니다...

 

https://opentutorials.org/course/3108/19310

험프리님이 말씀해주신데로 그대로 따라해 보아도. 메모리가 처음 시작 그 용량으로 돌아오질 않습니다.

 

저번에 답 주신 김원경 선생님의 말대로 폼 변수는 생성하지 않았습니다.

또, 동적 생성될 폼을 Availalbe forms으로 변경했습니다.


코드 입니다.

 

메인 폼의 폼 동적 생성 이벤트. (하나의 폼을 500회 생성 후 클로즈 이벤트 발생)

procedure TForm_Main.Button3Click(Sender: TObject);

var

  i : integer;

begin

  for i := 0 to 500 do begin

    Form1 := TForm1.Create(Nil);

    Form1.Show;

 

    Form1.Close;    //이것만 썻을 때는 모든 폼이 생성된 후에 모든 폼이 다같이 종료.

//    Form1.Free;   //이것도 같이 쓰면 생성 즉시 폼이 제거.

  end;

end;

 

동적 생성폼(Form1)의 클로즈 이벤트.

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

  Action := CaFree;

  Self := Nil;

end;


500회를 다 돌고나면 메모리 용량이 조금 줄어들기는 하는데 처음 실행시 용량으로 돌아가지 않습니다. 

(메모리 확인은 작업관리자의 사용자 탭에서 메모리 카테고리에서 확인 했습니다.)

(추가로 작업 관리자 - 성능 - 리소스 모니터 - 메모리 탭에서도 메모리 사용량을 확인 했습니다. )

 

최초 실행시 1.9MB

500회 실행 후 3.5MB (실행 중간에는 4.0MB까지 증가)

2회 500회 실행 후 3.5MB (실행시 용량이 증가하나 종료된 후에 3.5MB로 돌아옴)

 

제가 원하는 것은 최초 실행시 1.9MB로 돌아가게끔 설계를 하고 싶은데... 1회 실행 후의 용량이 당연한 결과인가요?

제 추측으로는 500회 생성된 변수들이 사라지지 않고 재사용 되고 있기 때문에 3.5MB로 유지되는걸로 보입니다. 메모리에서 완전 해제하는 방법이 없는 것인가요?

 

여러군데 뒤져봐도 생성까지만 설명을 하고 해제에 대해서는 자세한 설명이 없어서 헤메고 있습니다.

귀찮게해드려서 죄송합니다... 너무 궁금한데 물어볼곳이 마땅히 없네요...

번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 17131
공지 유용한 관련 사이트 관리자2 2014.03.20 55986
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 99418
579 롤리팝 5.0에서 구동이 되지않는 문제 가을이다 2014.12.25 1728
578 Android SDK platform-tools 26.0.2 설치오류 [3] file Jackim 2017.10.29 1736
577 엑셀 저장, 읽기 기능에서 오류 문의 [2] 포세가이 2018.12.07 1744
576 학생입니다! 스마트폰 키보드관련 질문입니다! 윤우민 2014.10.06 1747
575 png파일 오류 부분 [2] couping 2014.06.19 1750
574 groupbox 및 checkbox 등의 font color 변경 안되는 사항 [2] goinma 2018.05.03 1751
573 소켓 컴포넌트(TServerSocket, TClientSocket) 설치 후 컴파일 시 "Unable to open include file 'Web.Win.Sockets.hpp'" 오류가 발생합니다. [4] file 데브기어 2017.03.15 1753
572 Label 색을 변경을 하였는데, 컴파일해서 실행하면 검은색으로 표시됩니다. [6] 하루 2018.04.01 1754
571 모바일 이미지사이즈 속도 문의 [1] file 김하나 2014.03.19 1755
570 2tear로만 개발하다가 모바일 프로그램개발때문에 멀티티어 공부를 하고 있습니다. [1] file 어려워 2014.06.23 1755
569 외부 자바파일 연동중에 근우아빠 2014.10.23 1758
568 DataSnap Client에서 DataSetClient.ProviderName 속성창에 내용을 입력후 Active 시 오류 [1] file heeyec 2014.11.09 1768
567 TChart 콤포넌트를 uses만 하면 실행시 error납니다. 차리 2014.05.13 1768
566 안드로이드 Runtime.getRuntime().exec 커멘드처럼 할려면 어떻게 해야하나요? [1] 소란코더 2017.12.04 1769
565 datasnap에서 ClientDataSet의 CommandText 와 DataRequest() 의 차이가 뭔가요? 어려워 2014.07.28 1777
564 radphp xe2 에서 인쇄을 하는 방법 문의 합니다? 자이소 2014.05.10 1781
563 xe6 안드로이드앱 개발관련 문의 xe7 새로운 기능 질문사항 [1] file 데브닷개발 2014.11.05 1784
562 style 다운로드를 어디서해야하나요? [1] 정헌이 2014.06.11 1792
561 프로세스는 실행중인데 애플리케이션이 안뜨는경우 [1] jksun 2014.06.19 1795
560 [Kinvey] BaaS 강좌 실습 과정에서 에러가 발생합니다. file 소중한꿈 2014.09.20 1796