public static void TimePublisher(int port)
{
var ctx = ZmqContext.Create();
var socket = ctx.CreateSocket(SocketType.REP);
socket.Bind("tcp://*:" + port.ToString(CultureInfo.InvariantCulture));
while (true)
{
try
{
var wait = socket.Receive(Encoding.UTF8);
var timeString = GetTimeString();
socket.Send(timeString, Encoding.UTF8);
}
catch (ZmqException ex)
{
Logger.ErrorException("blabla", ex);
}
}
}
아래 while 루프를 실행하는 동안 객체 ctx가 GCed됩니까? 나는 참조가 객체를 참조하는 스택에 저장되어 있다고 생각한다. 메소드가 종료 될 때만 스택이 지워 지므로 참조가 지워진다. 객체가 GCed되어야한다.외부는 GCed 될 때까지 반대 할 것입니까?
왜 그렇게 생각합니까, 참조가 스택에 저장되어있을 때 메소드를 종료 할 때만 스택이 지워져서 참조가 지워지고 오브젝트가 GCed되어야합니다. – Benny
@Benny - 아니요, 릴리스 모드에서 JIT와 GC가 공동 작업하므로 현재 메소드에서 더 이상 참조되지 않는 변수가 루트로 작동하지 않습니다. 이것이 제 두 번째와 세 번째 단락에서 다루고있는 것입니다. –