Saya mengalami masalah saat mencoba menggunakan objek besar di R. Misalnya:
> memory.limit(4000)
> a = matrix(NA, 1500000, 60)
> a = matrix(NA, 2500000, 60)
> a = matrix(NA, 3500000, 60)
Error: cannot allocate vector of size 801.1 Mb
> a = matrix(NA, 2500000, 60)
Error: cannot allocate vector of size 572.2 Mb # Can't go smaller anymore
> rm(list=ls(all=TRUE))
> a = matrix(NA, 3500000, 60) # Now it works
> b = matrix(NA, 3500000, 60)
Error: cannot allocate vector of size 801.1 Mb # But that is all there is room for
Saya mengerti bahwa ini terkait dengan kesulitan mendapatkan blok memori yang berdekatan (dari sini ):
Pesan kesalahan yang dimulai tidak dapat mengalokasikan vektor ukuran menunjukkan kegagalan untuk mendapatkan memori, baik karena ukurannya melebihi batas ruang alamat untuk suatu proses atau, lebih mungkin, karena sistem tidak dapat menyediakan memori. Perhatikan bahwa pada build 32-bit mungkin ada cukup memori bebas yang tersedia, tetapi tidak cukup besar ruang alamat yang berdekatan untuk memetakannya.
Bagaimana saya bisa mengatasi ini? Kesulitan utama saya adalah bahwa saya sampai pada titik tertentu dalam skrip saya dan R tidak dapat mengalokasikan 200-300 Mb untuk sebuah objek ... Saya tidak dapat benar-benar mengalokasikan blok karena saya membutuhkan memori untuk pemrosesan lainnya. Ini terjadi bahkan ketika saya dengan rajin menghapus objek yang tidak dibutuhkan.
EDIT: Ya, maaf: Windows XP SP3, 4Gb RAM, R 2.12.0:
> sessionInfo()
R version 2.12.0 (2010-10-15)
Platform: i386-pc-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=English_Caribbean.1252 LC_CTYPE=English_Caribbean.1252
[3] LC_MONETARY=English_Caribbean.1252 LC_NUMERIC=C
[5] LC_TIME=English_Caribbean.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
Calloc
dan Free
memori, tetapi saya menduga ini bukan apa yang Benjamin lakukan.