메모리 반환?

게시판 IDL Q&A 메모리 반환?

0 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #1706 Reply
      sando
      회원

      안녕하세요.

      이 또한 언젠가 질문 올렸던거 같은데, 또…올립니다. 못찾아서요. 죄송.

      dicom 파일때문에, 32비트를 사용합니다.
      문제는 파일이 큰 경우, 반복해서 분석할게 많은게 메모리가 모자라,
      IDL 을 껐다켜고를 반복합니다.

      sav 파일로 컴파일해서 분석하는 경우는 더 불편하구요…
      어제그제도, 60개 분석하는데 한번데 2번씩되어서, IDL 을 수십번 재실행하면서 분석을 마쳤습니다…

      물론, 제 코드가 효율적이지 못한면도 있는데요,
      혹시는 reset 하듯히, 메모리를 비우거나,
      선언했던 array 를 없앨 수 있는 그런 기능은 없는지 궁금합니다~

      감사합니다.

    • #1707 Reply
      Sangwoo
      회원

      제 생각에는 TEMPORARY라는 함수를 잘 활용하시면 될 것 같은데요. 예를 들어서 어떤 sav파일에서 a라는 배열을 회복시키고, 이걸 프로그램 내부에서 b라는 배열로 대입해서 사용하되 다음과 같이 하는겁니다.

      b = TEMPORARY(a)

      물론 일상적으로는 b=a라는 문구를 쓰기도 하지만, 이 경우에는 a, b가 모두 메모리상에 존재하는 상태가 되고요. 위와 같이 TEMPORARY 함수를 사용하면 a는 메모리상에서 없어집니다. 굳이 비유한다면 b=a는 Copy&Paste에 해당되고, b=TEMPORARY(a)는 Cut&Paste에 해당될 것 같군요. 물론 a를 더 이상 쓸 일이 없다는 가정하에서 위와 같은 방식이 유용하겠죠. 그리고 프로그램 내부에서 HELP, /MEMORY와 같은 명령을 사용해서 ‘heap memory used’라는 문구 뒤에 나오는 메모리 사용량이 얼마나 늘어나는지를 체크해보는 것도 도움이 될 것 같습니다.

      • 이 답변은 Sangwoo에 의해 10 years 전에 수정됐습니다.
0 답변 글타래를 보이고 있습니다
'메모리 반환?'에 답변달기
글쓴이 정보: