[다시 질문] STL:Queue에서 push하면 계속되는 메모리 증가 원
안녕하세요. 초보입니다.
아래 글을 올렸으나 다시 수정하여 올립니다.
==========================================
A 프로그램에서는 데이터를 생성 및 처리 하여 B 프로그램으로 데이터를 보낼니다.
그런데 받는 B 프로그램에서 받아서 바로 처리가 되는데요.
A 프로그램에서는 데이터 생성하고 처리하는 부분이 느립니다.
그래서 큐와 쓰레드를 이용하기로 했습니다.
A프로그램에서 Main부분에서는 무수한 데이터를 계속해서 생성하여 큐에 저장합니다. 쓰레드에서는 큐에 저장된 데이터를 가져와 적절히 처리를 해주고 소켓를 이용하여 B프로그램으로 전송합니다.
위와같이 처리하는중.
큐의 push할때는 메모리가 생성되고, pop 할때는 메모리를 풀어주고 push 할때 재사용된다고 하는데요. 제대로 사용이 안되는거 같습니다.(push,pop 하는 속도가 빨라서 그런가 해서 테스트 해봤는데, 결과는 차이가 없었습니다.)
큐에 데이터를 push 할때 계속 해서 메모리가 생성이 발생한다면 시스템 메모리가 풀날것 같은데요.
어떻게 해야될지.. 메모리가 계속 증가 하게 되면 큐도 용도가 의심이 되네요.
참고로 데이터 동기화는 시켰습니다
정말 동기 잘되는지 찍어보니 PUSH->POP->PUSH->POP ....
이런순으로 잘 처리가 됩니다.
처음에만 메모리가 증가 되고 나중에는 메모리가 증가가 없겠지 하고 5분 동안 체크해봤는데요. 그것도 별로 소용이 없네요. 메모리 증가율이 점점 감소되지는 않았습니다.
200메가 정도에서 그만 두었습니다. 좀더 두었으면 아마 1기가까지 생성이 될것 같네요.
제가 잘 몰라서 그런거겠지만, 현재는 이놈의 큐가 왜 있는건지.
리스트도 해 봤는데요. 똑같은 결과 나왔습니다.
돌겠습니다. 어떻게 해야 될지..? 흐흐흐흐
그냥 쓰레드 안쓰고 생성 및 처리 되는 코드를 최적화 하는 방법밖에 없는건가요?
==========================================
Re: [다시 질문] STL:Queue에서 push하면 계속되는 메모리 증가
테스트 결과 메모리 사용량이 늘어나진 않는군요..
레드햇 7.3 gcc 2.95.3 버전에서 테스트했습니다.
다른부분에 메모리릭이 있는게 아닌지 확인해보세요.
답변 잘 받았습니다. ^^메모리를 동적으로 할당하는 부분은 없거든
답변 잘 받았습니다. ^^
메모리를 동적으로 할당하는 부분은 없거든요.
단순하게 본다면 아래 코드와 같이 사용합니다.
for(int x=0; x<1000; x++)
{
q.push(i);
i = q.front();
q.pop();
}
뭐가 문제인지.. 흐흐흐.. 그럼 즐거운 주말 보내세요.^^
댓글 달기