Tôi muốn tính toán lượng RAM đang được sử dụng bởi từng đối tượng trong không gian làm việc hiện tại của tôi. Có cách nào làm dễ hơn không?Xác định mức sử dụng bộ nhớ của các đối tượng?
Trả lời
một thời gian trước, tôi đã đánh cắp nugget này ít từ here:
sort(sapply(ls(),function(x){object.size(get(x))}))
nó đã phục vụ tốt
Bạn có thể thử các lsos()
chức năng từ this question:
R> a <- rnorm(100)
R> b <- LETTERS
R> lsos()
Type Size Rows Columns
b character 1496 26 NA
a numeric 840 100 NA
R>
1. theo kích thước đối tượng
để có được cấp phát bộ nhớ trên một đối tượng theo đối tượng cơ sở , gọi object.size() và vượt qua trong các đối tượng quan tâm:
object.size(My_Data_Frame)
(trừ khi lập luận thông qua tại là một biến, nó phải được trích dẫn, nếu không được bao bọc trong tên biến số nhận được.), sau đó bỏ qua các dấu ngoặc kép,
bạn có thể lặp qua không gian tên của mình và nhận được kích thước của tất cả các đối tượng trong đó, như vậy :
for (itm in ls()) {
print(formatC(c(itm, object.size(get(itm))),
format="d",
big.mark=",",
width=30),
quote=F)
}
2. theo loại đối tượng
để có được sử dụng bộ nhớ cho không gian tên của bạn, theo loại đối tượng, sử dụng 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
(Có chức năng khác , memory.size() nhưng tôi đã nghe và đọc rằng nó chỉ có vẻ hoạt động trên Windows. Nó chỉ trả về một giá trị bằng MB; do đó, để có được bộ nhớ tối đa được sử dụng bất kỳ lúc nào trong phiên, hãy sử dụng memory.size (max = T)).
Câu hỏi này đã được đăng và có câu trả lời hợp pháp rất nhiều, nhưng tôi muốn cho bạn biết một mẹo hữu ích khác để nhận kích thước của một đối tượng sử dụng thư viện có tên gdata và chức năng 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)
- 1. Xác định mức sử dụng bộ nhớ của các phần tử DOM được lưu trong bộ nhớ cache trong JavaScript?
- 2. Cách xác định mức sử dụng bộ nhớ trong ứng dụng .NET của tôi
- 3. Theo dõi mức tiêu thụ bộ nhớ của các đối tượng java khác nhau
- 4. Giảm mức sử dụng bộ nhớ RabbitMQ
- 5. Đo mức sử dụng bộ nhớ của một trang web
- 6. openssl: giảm mức sử dụng bộ nhớ
- 7. Sử dụng bộ nhớ Python: Đối tượng nào của tôi đang chiếm nhiều bộ nhớ nhất?
- 8. Giảm mức sử dụng bộ nhớ của các ứng dụng .NET?
- 9. Hết bộ nhớ nhưng không thấy phân bổ đối tượng quá mức trong các Công cụ
- 10. Giảm mức sử dụng bộ nhớ tối đa với @autoreleasepool
- 11. Có tệ khi không sử dụng DB nhưng sử dụng trong các đối tượng bộ nhớ?
- 12. Xác định lượng bộ nhớ mà một lớp sử dụng?
- 13. Java 6 Sử dụng bộ nhớ quá mức
- 14. Cách cấu hình mức sử dụng bộ nhớ của chương trình C
- 15. Cách biết mức sử dụng bộ nhớ trong C++
- 16. Cách đo mức sử dụng bộ nhớ add-on firefox
- 17. Cách đo mức sử dụng bộ nhớ đồ họa của ứng dụng WebGL
- 18. Công cụ để xác định các bộ nhớ trong các ứng dụng VB6
- 19. iPad nhận cảnh báo bộ nhớ với mức sử dụng bộ nhớ thấp
- 20. Cách giảm mức sử dụng bộ nhớ của ứng dụng WPF
- 21. Quản lý bộ nhớ/bộ nhớ đệm cho các đối tượng tốn kém trong C#
- 22. Ghi nhật ký sử dụng bộ nhớ của một đối tượng
- 23. PHP - xác định mảng tĩnh của các đối tượng
- 24. Sử dụng bộ nhớ của Playframework
- 25. Cảnh báo và sự cố bộ nhớ iPhone - nhưng Công cụ hiển thị mức sử dụng bộ nhớ thấp
- 26. Đối tượng PHP nằm trong bộ nhớ
- 27. Xác định mức sử dụng điện lập trình trong Windows?
- 28. Xác định đối tượng mảng
- 29. Các đối tượng instantiating trong bộ nhớ chia sẻ C++
- 30. Các đối tượng khác trong bộ nhớ có cùng id?
cũng vậy, nếu bạn muốn tổng bộ nhớ được sử dụng bởi phiên R, người ta có thể thực hiện 'object.size (x = lapply (ls(), get))' và 'print (object.size (x = lapply (ls(), get)), đơn vị = "Mb") ' – tflutre
Điều đó tốt đẹp chút nugged misled tôi, kể từ khi tôi đã có một cái gì đó lớn gọi là 'x' (gợi ý: nó trông nhỏ); đây là một sự thay thế: 'sort (sapply (mget (ls()), object.size))'. – petrelharp
@tflutre Sự hiểu biết của tôi là loại điều này có thể gây hiểu lầm khi R được sao chép khi viết. Nếu tôi lấy some_list <- some_other_list, kích thước của some_list được báo cáo có cùng kích thước với some_other_list, nhưng nếu tôi chỉ đọc từ some_list thì bộ nhớ đang được chia sẻ. Ai đó có thể xác nhận nếu điều này là chính xác? – savagent