Q&A

  • 감사합니다. 추가적인 중요한 질문입니다.
선생의 답변에 진심으로 감사드립니다.

그런데 이런 의문은 아직 해결이 안되는군요.

사실 이부분의 문제는 단순한 문제가 아니라 무척 심도있게 다뤄져야 할 것이기 때문에 다른 분들도 관심을 가지셔야 할 것 같군요.

참고로 저는 델파이에서 객체지향과 상속성의 기능을 거의 완벽하게 사용하려고 하고 있는데 이 구현과정에서 아주 상당한 수준의 코딩양의 절약과 효율을 보고 있으나 리소스 문제로 애를 먹고 있습니다.

저는 최근 한주이내의 국내외 고급 서적 약 30 권 이상의 델파이 서적을 가지고 있는데 심도 있는 상속성 거론은 단 한권에서만 보았고 그 책도 약 3 페이지에 걸쳐 거론되어 있는데 저는 제 프로그램에서 약 95 % 이상을 상속성을 사용하여, 파일의 크기와 코딩재사용성과 유지보수성의 장점을 아주 높게 평가하고 있습니다.

실제 상속성 이용전과는 비교할 수 없는 상당한 진보가 있지만 이부분에 대한 서적이 없어서 제 경험적인 노하우를 많이 습득한 상태인데 결과적으로 메모리 관리에 대한 제 일천한 지식으로 한계를 느끼고 있습니다.

여러 고수들의 도움이 있다면 이부분에 대한 부족함이 크게 채워질 것으로 믿습니다.



다음과 같은 의문을 정리해 보겠습니다.



1. 그렇다면 참조가 되는 unit 안의 procedure 나 function , 각종 변수들은 실제 그들이 담겨있는 자신의 폼이 호출되지 않아도 다른 폼에서 참조할 수 있도록 해 놓은 상태만으로 이미 메모리의 자리를 차지하게 되면 그 만큼 리소스를 낭비하게 되는 것 아닙니까 ? 그렇다면 어떻게 리소스 낭비를 막을 수 있는지요 ?

2. 그리고 메모리 낭비를 어떤방법으로 확인할 수 있는지요 ?

3. 또, 참조되도록 public 에 선언한 변수 이외의 함수와 프로시져는 어떤 기준으로 메모리를 차지하게 되는지요.

결과적으로 참조되도록 public 으로 선언된 각종 변수와 함수, 프로시져가 많을 수록 실제 메모리의 부족현상은 심화될 수 밖에 없는것인지요 ?

4, 만일 A 유닛을 B 유닛에서 참조하고 B 는 C 에서 참조하는 상황에서 메인폼이 D 일 경우, C 가 호출되어 화면에 보여지게 될 때 비로소 A 와 B 의 유닛안의 변수와 프로시저 함수등이 메모리 리소스를 차지하게 되는 것이고 C 가 폼을 닫게 되면 역시 참조를 제공하는 A 와 B 유닛의 변수와 프로시저, 함수등의 리소스도 함께 제거되는 것입니까 ?



2  COMMENTS
  • Profile
    아무게 1999.06.23 19:58


    이용민 께서 말씀하시기를...



    > 다음과 같은 의문을 정리해 보겠습니다.

    >

    > 1. 그렇다면 참조가 되는 unit 안의 procedure 나 function , 각종 변수들은 실제 그들이 담겨있는 자신의 폼이 호출되지 않아도 다른 폼에서 참조할 수 있도록 해 놓은 상태만으로 이미 메모리의 자리를 차지하게 되면 그 만큼 리소스를 낭비하게 되는 것 아닙니까 ? 그렇다면 어떻게 리소스 낭비를 막을 수 있는지요 ?



    -> 흐흐.....그렇지 않습니다....얼마나 큰 프로젝트를 하고 계신지는

    모르겠으나 리소스가 낭비는 님이 생각하시는 것보다 크지 않습니다.

    그것은 정적인 관리가 아니라 동적인 관리가 가능하기 때문입니다.

    그리고 하나 착각하시는 것이 있으신거 같은데 리소스는 쓰라고 있는

    것입니다. 펑펑 남아도는 리소스를 안쓴다는 것은 정말 우수운 일입니다.

    다만 우리는 우리가 쓴 리소스를 작업이 끝난 후 쓴만큼 돌려 주면

    되는 것입니다...





    > 2. 그리고 메모리 낭비를 어떤방법으로 확인할 수 있는지요 ?



    -> 수동적인 방법으로 프로그래머의 자질입니다.

    자동적인 방법으로 터보파워사의 메모리 슬루스,

    누메가사의 바운드체커등이 있습니다.





    > 3. 또, 참조되도록 public 에 선언한 변수 이외의 함수와 프로시져는 어떤 기준으로 메모리를 차지하게 되는지요.

    > 결과적으로 참조되도록 public 으로 선언된 각종 변수와 함수, 프로시져가 많을 수록 실제 메모리의 부족현상은 심화될 수 밖에 없는것인지요 ?



    -> 음....정말 갈수록 태산이군

    정말 얼마나 큰 프로젝트길래 저런 적정을 하는 걸까.....

    델파이를 무시하지 마세요. 메모리의 부족현상은 프로그래머의 자질입니다.

    프로그래머가 사용한 리소스는(동적생성) 프로그래머 자신이 해결해야 합니다.



    > 4, 만일 A 유닛을 B 유닛에서 참조하고 B 는 C 에서 참조하는 상황에서 메인폼이 D 일 경우, C 가 호출되어 화면에 보여지게 될 때 비로소 A 와 B 의 유닛안의 변수와 프로시저 함수등이 메모리 리소스를 차지하게 되는 것이고 C 가 폼을 닫게 되면 역시 참조를 제공하는 A 와 B 유닛의 변수와 프로시저, 함수등의 리소스도 함께 제거되는 것입니까 ?





    -> 뭐든지 자동으로 하려는 생각이 팽배 하시군

    A, B 유닛이 C의 자식일 경우이면 함께 제거되고

    그게 아니라면 A, B 유닛이 종료될때 델파이님이 쓰신 리소스는

    자신이 해제 할테고, 프로그래머라고 하는 선생이 쓰신 리소스는

    선생의 자질에 달려 있소.....









  • Profile
    이용민 1999.06.24 11:23
    (주) 천의무봉의 이용민입니다.

    선생의 말씀 고맙습니다.

    그런데 깨끗한 정리는 안되는 군요.

    자질을 말씀하시기에 이왕 자질이 의심받고 있으니 더 깍일것이 없다는 생각해 한가지 더 여쭤보지요.

    프로시저나 함수등은 참조를 위해 공개되어 사용되도록 하면 이것들도 리소스를 차지하게 되는 겁니까 ?

    참고 말씀을 좀 드리면

    선생께서는 얼마나 큰 프로젝트냐고 물으셨는데

    제가 하고 있는 프로젝트의 크기가 문제가 아니라 저는 국내외의 거의 대부분의 프로그래머들이 실제 깊이 활용하지 못하고 있는 객체지향형 프로그램의 핵심이라 할 수 있는 상속성에 대한 활용을 거의 모든 프로그램에서 사용하고 있기 때문에 어떤 부분도 소홀히 다룰 수 있는 입장이 아니거든요.

    선생께서는 모든 코딩과 폼을 상속성으로 사용해 보신적이 있으십니까 ?

    말씀드린데로 국내외 고급서적 약 30 권이상을 가지고 있는데 이중 단 한권에서만 약 3 페이지에 걸쳐 상속성을 다뤄주고 있지요.

    아마도 깊은 부분이라서 실전 노하우가 없으면 사용에 어려움이 많을 것으로 압니다.

    저는 이부분에 상당한 진척을 보고 있거든요.

    그래서 다른 프로그래밍 기법과는 구현 방법이 달라 코딩양과 재사용성이 아주 뛰어난 편인데 C 에서 시작한 프로그래밍의 지식이 아니어서 이부분에 대한 부족함을 늘 느끼고 있습니다.

    도움주신 말씀이 사실 저도 알고 있는 바인데 좀 더 깊은 내용의 조언을 필요해서 여쭤보려고 합니다.

    아 그리고 선생께서 혹시 말씀하셨던 리소스 자동 확인 프로그램을 가지고 계시면 어떻게 입수할 수 있는지 조언을 좀 부탁드립니다.

    그럼 좋은 시간되십시오.