흠? 러스트에서 모든 데이터는 소유권이라는 개념으로 단 하나의 변수에 의해서 소유됩니다. 소유권을 가진 변수가 더 이상 접근 불가능해질 때 대표적으로 {} 스코프가 끝날 때 소유한 데이터도 해제됩니다. 러스트 컴파일러가 발전해서 이제는 스코프가 끝나기 전에도 더 이상 참조되지 않는다는걸 파악해서 더 빨리 해제될 수도 있습니다. 데이터의 소유권은 다른 변수로 이전될 수 있으며 기존 변수는 데이터에 대한 접근 권한을 잃고 더 이상 접근이 불가능해집니다. 이런 매커니즘이 문법차원에서 이루어지기 때문에 컴파일 된 코드는 런타임에 소유권 추적 비용을 쓰지 않고 메모리 안전한 코드를 작성할 수 있습니다. 메모리 릭이 완전히 근절되지는 않는데 래퍼런스 카운트 변수가 서로를 참조하는 경우가 있습니다.
익명(221.149)2026-04-29 16:25:00
답글
중요한 점은 러스트에선 사용이 끝난 데이터가 쨰깍째깍 해제된다는 점이죠. 예를 들어 요청 하나를 처리하는데 1mb 램 공간이 필요하다고 해봤을 떄 러스트는 프로그램 자체 램에 1mb*스레드 수 만큼만 램이 있으면 더 넘칠 일이 없지만 gc는 이게 계산이 될까요? gc가 어느 시점에 실행되는지는 프로그래머가 통제하지 못합니다. 자바가 vm때문에 무거운것도 있지만 go라고 해도 결국에 gc가 실행되는 시점은 모르는 것이고 그 전까지의 요청은 쭉 쌓여있고 최소 요구량의 몇배의 램이 필요하다는 것이죠. php는 더 저능해서 스레드도 안되고 자식 프로세스를 처 띄워대고 요청 몇개 처리하다가 프로세스를 죽이는 아주 똥쓰레기 방식으로 gc가 이거보단 낫다고 할 수 있지만 결국 최소 요구치의 배수의 램을 확보해야하는게
러스트는 메모리 어떻게 관리하시는지?
스코프 벗어나면 알아서 해제 해줍니다. - dc App
@글쓴 프갤러(221.149) 그거는 지역메모리고 Gc는 동적메모리 관리하는데요
@ㅇㅇ(118.235) 네 러스트는 동적 메모리 힙에 할당된 것도 함수 리턴값 같이 스코프 못벗어나면 해제시켜버립니다. - dc App
러게이님 말대로라면 스코프내에서 할당해제반복하면 메모리누수나는 언어라니 쳐다보지도 말아야겠네요
gc도 스코프 내에서 계속 할당하면 oom나는데 그냥 프로그래밍을 그만 두시는거 추천드립니다. - dc App
@글쓴 프갤러(221.149) 제말은 .. 회수 메커니즘이 분명있을텐데 스코프로 퉁치시니 어이없어서 한말인더.. 저위에 제말이 분명하지 못했네요
흠? 러스트에서 모든 데이터는 소유권이라는 개념으로 단 하나의 변수에 의해서 소유됩니다. 소유권을 가진 변수가 더 이상 접근 불가능해질 때 대표적으로 {} 스코프가 끝날 때 소유한 데이터도 해제됩니다. 러스트 컴파일러가 발전해서 이제는 스코프가 끝나기 전에도 더 이상 참조되지 않는다는걸 파악해서 더 빨리 해제될 수도 있습니다. 데이터의 소유권은 다른 변수로 이전될 수 있으며 기존 변수는 데이터에 대한 접근 권한을 잃고 더 이상 접근이 불가능해집니다. 이런 매커니즘이 문법차원에서 이루어지기 때문에 컴파일 된 코드는 런타임에 소유권 추적 비용을 쓰지 않고 메모리 안전한 코드를 작성할 수 있습니다. 메모리 릭이 완전히 근절되지는 않는데 래퍼런스 카운트 변수가 서로를 참조하는 경우가 있습니다.
중요한 점은 러스트에선 사용이 끝난 데이터가 쨰깍째깍 해제된다는 점이죠. 예를 들어 요청 하나를 처리하는데 1mb 램 공간이 필요하다고 해봤을 떄 러스트는 프로그램 자체 램에 1mb*스레드 수 만큼만 램이 있으면 더 넘칠 일이 없지만 gc는 이게 계산이 될까요? gc가 어느 시점에 실행되는지는 프로그래머가 통제하지 못합니다. 자바가 vm때문에 무거운것도 있지만 go라고 해도 결국에 gc가 실행되는 시점은 모르는 것이고 그 전까지의 요청은 쭉 쌓여있고 최소 요구량의 몇배의 램이 필요하다는 것이죠. php는 더 저능해서 스레드도 안되고 자식 프로세스를 처 띄워대고 요청 몇개 처리하다가 프로세스를 죽이는 아주 똥쓰레기 방식으로 gc가 이거보단 낫다고 할 수 있지만 결국 최소 요구치의 배수의 램을 확보해야하는게