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

Delphi 폼 생성과 해제.

2019.09.29 19:59

엽기토끼이요 조회 수:494

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

 

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 17542
공지 유용한 관련 사이트 관리자2 2014.03.20 56449
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 99914
413 RESTClient에서 POST가 안되요!!! [1] 카이로스 2016.01.27 1274
412 안드로이드 에뮬레이터 설정 방법을 문의 드립니다 [1] file 손보라 2018.07.05 1275
411 Rad Studio XE7 Trial 버전에서 안드로이드 연동 후 [1] file 다몽 2014.11.05 1277
410 캔들차트 [1] pky4437 2020.03.02 1278
409 [공유] 엣지 브라우저 컴포넌트 설치 후 실행 시 "Failed to initialise Edge browser control" 오류가 발생합니다. [2] file 험프리 2020.09.28 1279
408 Showmodal 시 Cannot make a visible window modal 오류 발생 [1] file 신현아빠 2017.11.21 1281
407 [질문] 이미지를 datasnap을 사용하여 서버로 전송밥법 [2] 화현 2021.08.08 1284
406 구글플레이 자동업데이트 적용 방법 문의 [1] 사랑남 2015.04.24 1285
405 ADOQuery Insert 후 Refresh 할 수 있나요?? [6] 초보델팡이 2019.05.20 1288
404 XE3 에서 무료로 사용 가능한 Report 툴이 있는지 알고 싶습니다. [2] 새벽공기 2015.01.14 1289
403 [세미나] 카톡과 같은 서비스 프로그램을 만들 수 없나요? [1] Humphery 2014.07.30 1295
402 델파이(안드로이드) , cubrid 연결 문의. [3] Hoony 2021.08.09 1295
401 Web base DLL 파일 디버깅 문의 worney 2014.09.24 1302
400 [세미나] 세미나를 다시 볼수는 없나요? [1] Humphery 2014.09.17 1303
399 [세미나] Push 메시지 사용량에 제한이 있나요? [1] Humphery 2014.08.20 1304
398 XE7에서 DockForm.dcu 문제 zsungsolz 2014.12.26 1313
397 시리얼 통신 질문 드립니다. [3] 뮤뮤 2020.07.21 1320
396 MDI, CHILD 구성 DLL Form Close [1] 가나다 2021.01.11 1323
395 RAD 서버 운영환경에 설치중 오류 [2] file 노란바나나 2019.10.30 1325
394 웹소켓 사용 질문 [3] 나즈나 2018.01.07 1326