gc ()와 rm ()의 차이점은 무엇입니까?
에 대한 호출을 사용하여 R의 메모리를 주기적으로 청소하고 rm(list=ls())
있습니다. 그 후에
가비지 수집기에 전화해야 gc()
합니까?
이 두 기능의 차이점은 무엇입니까? 않는 gc()
전화를 rm()
특정 변수에 대한?
첫째, 두 사람은 그 매우 다르다는 것을 주목하는 것이 중요하다 gc
삭제되지 않습니다 어떤 당신은 여전히 그것은 단지 더 이상 사용하여 제거 여부에 대한 액세스 권한을 (가지고 사람을위한 메모리 비워 일 아민되는 변수를 rm()
하거나, 말, 생성을 이후 반환 된 함수에서). 달리기 gc()
는 절대 변수를 잃지 않습니다.
하지만을 (를) 호출 gc()
한 후 전화 를해야하는지 여부 rm()
는 좋은 질문입니다 . gc에 대한 문서 는 다음과 같이 유용하게 기록됩니다.
gc를 호출하면 가비지 콜렉션이 발생합니다. 이것은 또한 사용자 개입없이 자동으로 수행되며 gc를 호출하는 주요 목적은 메모리 사용량에 대한 보고서입니다.
그러나 큰 개체가 제거 된 후 gc를 호출하면 R이 운영 체제에 메모리를 반환하라는 메시지가 표시 될 수 있으므로 gc를 호출하는 것이 유용 할 수 있습니다.
그래서 대답은 gc()
어쨌든 (즉시가 아니라면 곧 곧) 트리거 될 가능성이 있지만 전화하는 것이 좋을 수 있다는 것입니다 (적어도 상처를 입힐 수는 없습니다).
개인적 gc()
으로 루프가 사용 가능한 공간을 채우기 시작할 때 일부 RAM을 확보하기 위해 in 루프 를 포함하고 싶습니다 . 같은 것
for(i in 1:1000){
res[[i]] = some operation
gc()
}
Gc 패널티에 대한 ThankGoat의 의견을 다시 작성하십시오. 이것은 사실이지만 루프에서 N 반복마다 gc를 호출하도록 결정할 수 있습니다 (여기서 N은 여러 가지 방법으로 매개 변수화 할 수 있음). 반복 횟수는 많지만 주어진 반복 내에서 리소스 사용량이 더 적은 루프의 경우 원하는 성능을 다시 얻기 위해 반복마다 GC를 수행 할 필요는 없습니다.
물론 매우 많은 사용량의 반복을 반복하는 경우 다른 이야기이지만 그 단계에서는 코드를 단순히 벡터화하거나 다른 언어로 작성해야 할 수도 있습니다. .
참고 URL : https://stackoverflow.com/questions/8813753/what-is-the-difference-between-gc-and-rm
'IT Share you' 카테고리의 다른 글
인라인 이벤트 핸들러를 작성하는 것이 나쁜 습관입니까? (0) | 2020.12.12 |
---|---|
doctype이 필요한 이유는 무엇입니까? (0) | 2020.12.12 |
Amazon ec2 사용자 데이터, 어떻게 작동합니까? (0) | 2020.12.12 |
Composer로 jQuery를 설치하는 방법은 무엇입니까? (0) | 2020.12.12 |
localStorage가 가득 차면 어떻게됩니까? (0) | 2020.12.12 |