노무현 대통령 배너

OOP

액션스크립트의 객체 재사용을 위한 오브젝트 풀(Object Pool)

by on 12.02, 2010, under OOP, 고수들은 가르쳐주지 않는 AS3.0 입문

이 포스트는 “플래시 플레이어의 가비지 컬렉션(gabage collection)에 대한 이해” 로부터 이어지는 내용 입니다.

A. Object Pool의 의미

객체 재사용 이라고 해서 뭐 엄청난 방법이 필요한 것은 아닙니다. 가장 쉽게 사용할 수 있는 방법으로는 Array 나 Vector 또는 Object 와 같은 컬렉션(Collection) 형태의 자료구조에 객체를 만들어 넣어두고 필요한 만큼 사용한 후, 필요없어진 객체를 다시 반납하는 방식으로 로직을 구성하면 됩니다.

Object in Pool !!!

이러한 구조를 객체 풀 또는 오브젝트 풀(Object Pool) 이라고 부르고, 오브젝트 풀로부터 객체를 획득하는 행위를 풀링(pooling) 한다고 표현합니다.Pool은 우리도 흔히 사용하는 단어 입니다. [구글 사전 링크] 수영장의 그것을 일컫는 단어이기도 하고요, 제안서에서도 자주 “인력 풀” 과 같은 형태로 자주 등장합니다. 스타크래프트의 저그 종족에서 저글링을 생산하기 위한 기본 건물을 스포닝 풀(Spawning Pool : 산란못)이라고 부르죠. 어떠한 대상이 모여있는 특정 장소라는 원래의 뜻을 가지고 있습니다.

(계속 읽기…)

10개의 댓글 :, , , , , , , , , , more...

플래시 플레이어의 가비지 컬렉션(gabage collection)에 대한 이해

by on 12.01, 2010, under OOP, 고수들은 가르쳐주지 않는 AS3.0 입문

이 포스트는 “액션스크립트로 하는 객체 재사용(재활용)과 오브젝트 풀(Object Pool) – 개요” 로부터 이어지는 내용 입니다.

A. 가비지 컬렉션 일반론 Gabage Collection Overview

프로그래밍을 하면서 사용한 객체는 메모리를 소비해야 하기 때문에 운영체제에서 빌려와서 사용하게 됩니다. 메모리를 빌려와 그 공간에 객체를 기록하는 행위를 할당(allocation) 이라고 합니다. 그리고 객체를 사용한 후 더이상 필요가 없어지게 되면 객체를 운영체제에 반납하는 절차를 거쳐야 합니다. 마치 도서관에서 책(객체)을 대출한 후 열람실(메모리)에서 열람하는 것과 같다고 볼 수 있습니다.

그런데 프로그래밍이라는 것이 컴퓨터가 하는것이 아니라 개발자라는 사람이 하는 것이라, 운영체제에서 빌려온 메모리를 반환하지 않고 빼먹는 개발자가 있기도 합니다. 프로그램이 짧은 시간 동안 실행되고 종료 되는 것이라면 큰 문제는 아니지만, 서버용 프로그램과 같이 프로그램이 실행 한 후 오랜 시간 동안 실행 상태를 유지해야 하는 경우에는 메모리에 더 이상 사용하지 않게된 메모리들이 점점 쌓이는 한편, 새로운 메모리는 계속 요구 되기 때문에 언젠가는 메모리가 꽉 자서 옴짝 달싹 할 수 없게 됩니다. 이런 것을 메모리 유출(memory leek) 현상이라고 하여 프로그램 에러의 가장 치명적인 원인이 됩니다.

그래서 현대의 고급 프로그래밍 언어에는 이런 메모리 반납 과정을 자동으로 처리해 주는 Gabage Collection (이하 GC) 이라는 것이 생겨났습니다. 프로그래머가 사용한 후 필요 없어진 객체들은 GC가 정기적으로 수거하고 메모리에서 소멸시켜버려 다시 메모리를 사용할 수 있는 상태로 만들어주는거죠. 위에서 한 도서관의 비유를 계속 이어나가자면 가비지 컬렉션은, 우리가 그 존재를 눈치채기는 쉽지 않지만, 더이상 아무도 읽지 않거나 너무 낡아 책으로서의 가치가 없어진 것들을 수거해서 처리하는 사서에 비할 수 있을것 같습니다.

그러나 GC는 메모리 반환을 하기 귀찮아 하는 게으른 프로그래머를 위한 도구라기 보다는, 프로그래머가 메모리 반환 같은 단순한 일에 신경쓰지 않고 보다 큰 개념의 로직이나 구조적인 프로그래밍에 집중할 수 있도록 도와주는 역할을 한다고 보는것이 타당합니다.

(계속 읽기…)

댓글남기기 :, , , , , , , , , , , more...

액션스크립트로 하는 객체 재사용(재활용)과 오브젝트 풀(Object Pool) – 개요

by on 11.30, 2010, under OOP, 고수들은 가르쳐주지 않는 AS3.0 입문

플래시가 처음 등장했을 무렵의 액션스크립트는 자바스크립트 수준의 쉬운 언어였기 때문에 그만큼 장벽이 낮게 느껴져 많은 숫자의 플래시 개발자들이 등장할 수 있었습니다. 네비게이션 바나 롤링 배너와 같은 간단한 작업물 만을 만들던 시절에는 객체지향적인 프로그래밍 방법론은 그닥 중요한 이슈가 아니었습니다. 되려, 플래시가 처음부터 현재 AS3.0 과 같은 형태로 시작했다면 현재 현업에서 일하고 있는 플래시 개발자 중 꽤 많은 숫자가 아마 다른일을 하고 있을 것입니다. 시각적이고 쉬운 접근 방식이 브라우저의 일개 플러그인에 불과한 플래시가 이 정도 수준의 개발자 인구를 가지게 하는 원인이 되기도 했죠.

그러나 사용자들의 웹 애플리케이션에 대한 기대치가 높아지고 플래시로 만들어진 다양한 형태의 애플리케이션이 등장함으로서 보다 높은 차원의 프로그래밍 스킬이 요구되는 경우가 생겼습니다. 객체 재사용(재활용) 은 그런 한 단계 높은 차원의 프로그래밍 스킬 중 하나라고 볼 수 있는데요, 객체를 재사용 하는 방법에 대해 몇 개의 연속 포스팅으로 알아보겠습니다.

제가 이 주제에 대해 포스팅을 하게 된 직접적인 계기가 된 일이 있습니다. 얼마전 액션스크립트 카페에 아래와 같은 질문이 올라왔었습니다.[01]

(계속 읽기…)

  1. http://cafe.naver.com/flashactionscript/53831 []
3개의 댓글 :, , , , , , , more...

  • Page 1 of 2
  • 1
  • 2
  • >

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Meta