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 문제는 아닌것 같은데...
제가 무언가 놓치는 부분이 있는것 같아서요...^^;;
책을봐도 그대로 한것같고....샘플 소스를 뒤져도 그래서...
즐거운 하루되시길~