Re: [HalfNetwork] ACE_Asynch_Write_Stream 메모리 증가

55 views
Skip to first unread message
Message has been deleted

YoungGi Lim

unread,
Apr 13, 2011, 2:22:58 AM4/13/11
to halfn...@googlegroups.com
HalfNetwork에 대한 질문이 아니라 ACE에서 Proactor 사용법에 대한 질문이군요.

handle_read_stream()에서도 result.message_block() 을 release 해주어야 합니다.

설명에서 유추할수 있는 해결책은 이정도 인것 같습니다.


2011/4/7 duanf <invis...@gmail.com>

Proactor 로 돌리도록 구성하고 ACE_Service_Handler 를 상속받은 이벤트 핸들러로

virtual void handle_read_stream(const ACE_Asynch_Read_Stream::Result&
result);
virtual void handle_write_stream(const
ACE_Asynch_Write_Stream::Result& result);

를 정의하여 사용하도록 했습니다. (샘플 그대로...^^)

그런데 handle_read_stream 에서

ACE_Asynch_Write_Stream writer_;
로 정의된 스트림에 write 를 했더니 메모리가 꾸준히 증가합니다.

ACE_NEW_NORETURN(tempPacket_,
ACE_Message_Block(2,ACE_Message_Block::MB_DATA));
tempPacket_->copy("OK", 2);
this->writer_.write(*tempPacket_,tempPacket_->length());

내용이 write 하는 부분이구요..


handle_write_stream 에서는

result.message_block().release();

하여 무조건 release 하도록 했습니다.
이 부분을 빼버리면 당연히 더 급격히 메모리가 증가하는데
그나마 적게 증가하네요....


물론 write 부분만 빼면 증가하진 않습니다. read 부분은 release 가 잘되는 걸로 봐서는
ACE_Memory_Block 의 release 문제는 아닌것 같은데...

제가 무언가 놓치는 부분이 있는것 같아서요...^^;;
책을봐도 그대로 한것같고....샘플 소스를 뒤져도 그래서...


즐거운 하루되시길~

Reply all
Reply to author
Forward
0 new messages