garbages

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ garbages ] in KIDS
글 쓴 이(By): cookie ()
날 짜 (Date): 2011년 01월 16일 (일) 오전 08시 33분 34초
제 목(Title): Buffer 할당/재사용 문제...


C/C++ 류의 GC가 없는 언어의 경우는 보통 calling 루틴에서 
결과를 반환하는 메모리버퍼를 called 루틴 쪽에
인수로 공급하고 나중에 free하는게 일반적이고 

Java/C#류의 GC가 있는 언어들은 called 루틴이 자동으로 
반환할 결과의 메모리를 할당해서 결과 값으로 
반환하는게 일반적인데..
GC나 메모리 할당은 모두 상당히 비싼 조작들 이다.

pre-allocated/statsic  버퍼를 재사용해서 오버헤드를 줄이기도 하지만 
이건 multi thread 에선 사용할수 없다.

thread safe 하면서도 이런 버퍼할당 오버헤드를 크게 줄일수
있는 방안은 없을까? 일정한 프로그램상의 제한도 감수할수 있다.

또 alloca() (allocate on stack) 를 좀더 효과적으로 편리하게 
사용하는 방법이 없을까? 

대부분의 malloc 된 메모리 영역들은 이용 수명이 아주 짧고 
바로 버려진다는 사실을 이용해서 temporay malloc 과 자동 free 의
장점을 결합하고 약간의 메모리 낭비를 감수하고서  
stack 과 heap 의 장점과 성능, 편리함 , 안전성 등 을 
동시에 누릴 새로운 메모리 할당/사용/반환(폐기) 패러다임은 없을까?

brk()/sbrk() 처럼 일정 스텍포인터 위치를 마크해두고 
마치 복수의 스택을 가지고 있는 거 처럼 
일괄적으로 free하는 조작을 좀더 세분화 할순 없을까?















[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.