IT

어디서 발생의 메모리를 결정하고 있습니까?

lottoking 2020. 7. 9. 07:53
반응형

어디서 발생의 메모리를 결정하고 있습니까? [복제]


이 질문에는 이미 답변이 있습니다.

현재 작업 공간 내의 각 객체에서 얼마나 많은 RAM을 사용하고 있는지 알고 싶습니다. 이 작업을 수행하는 쉬운 방법이 있습니까?


얼마 전에 나는 여기 에서이 작은 덩어리를 훔쳤습니다 .

sort( sapply(ls(),function(x){object.size(get(x))})) 

그것은 나에게 잘 봉사했다


1. 클래스 크기별

클래스 별로 메모리 할당을 얻으려면 object.size ()를 호출 하고 관심 객체를 전달하십시오.

object.size(My_Data_Frame)

(인수가 전달 된 변수가 아닌 한, 묶 따옴표로 거나 받을 호출로 감싸 야합니다 .) 변수 이름을 입력 한 다음 따옴표를 생략하고 ,

네임 스페이스를 반복하고 다음과 같이 네임 스페이스의 모든 클래스를 얻을 수 있습니다.

for (itm in ls()) { 
    print(formatC(c(itm, object.size(get(itm))), 
        format="d", 
        big.mark=",", 
        width=30), 
        quote=F)
}

2. 클래스 별

네임 스페이스의 메모리 자원을 얻었습니다 memory.profile ()을 사용하십시오.

memory.profile()

   NULL      symbol    pairlist     closure environment     promise    language 
      1        9434      183964        4125        1359        6963       49425 
special     builtin        char     logical     integer      double     complex 
    173        1562       20652        7383       13212        4137           1 

( memory.size ()라는 다른 함수가 Windows에서만 작동하는 기능이라고 들었습니다. 값은 MB 단위로 반환 메모리 .size (최대 = T)).


이 질문 에서 lsos()기능을 시도 할 수 있습니다 .

R> a <- rnorm(100)
R> b <- LETTERS
R> lsos()
       Type Size Rows Columns
b character 1496   26      NA
a   numeric  840  100      NA
R> 

이 질문은 게시 훨씬 전에 합법적 인 답변을 가지고 있지만 난 당신이 라이브러리라는 사용하여 개체의 크기를 위해 또 다른 유용한 팁을 알려주고 싶어했다 GDATA 과 그 ll()기능을.

library(gdata)
ll() # return a dataframe that consists of a variable name as rownames, and class and size (in KB) as columns
subset(ll(), KB > 1000) # list of object that have over 1000 KB
ll()[order(ll()$KB),] # sort by the size (ascending)

참고 URL : https://stackoverflow.com/questions/1395270/determining-memory-usage-of-objects

반응형