我在磁盘上有一个大小约为5.9GB的CSV文件。我在R中读取此文件并测量其大小。我发现它的R大小约为7.7 GB。但是我发现文件读取后OS占用了大约22GB的额外空间。记忆职业的这种巨大差异尚不清楚。
以下是详细信息。我使用以下命令读取R中的文件:
data<-read.csv("train.csv",header=TRUE, colClasses=c('character','factor','numeric',rep('factor',21)))
该文件有24个功能。一个字符,一个数字和所有其他因素。在读取文件时,我在R中检查'data'对象的大小。我的大小约为7.7 GB,如下所示:
> library(pryr)
> object_size(data)
7.72 GB
> object.size(data)
7720196888 bytes
> ls()
[1] "data"
但是,我的操作系统会报告额外的内存消耗。读取csv文件之前和之后的差异大约是22Gb,远远超过R报告的7.7GB。我记忆消耗之前和之后如下。请看下面的RAM( MemTotal 和 MemFree )和SWAP( SwapTotal 和 SwapFree )几乎完全未使用:
Before reading CSV file:
[xyz@master ~]$ cat /proc/meminfo
MemTotal: 16169156 kB
MemFree: 14437468 kB
Buffers: 47676 kB
Cached: 492140 kB
SwapCached: 0 kB
Active: 1036052 kB
Inactive: 439512 kB
Active(anon): 936628 kB
Inactive(anon): 135584 kB
Active(file): 99424 kB
Inactive(file): 303928 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 28631036 kB
SwapFree: 28631036 kB
Dirty: 100 kB
Writeback: 0 kB
AnonPages: 937792 kB
Mapped: 184784 kB
Shmem: 136468 kB
Slab: 75220 kB
SReclaimable: 39404 kB
SUnreclaim: 35816 kB
KernelStack: 3040 kB
PageTables: 31976 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 36715612 kB
Committed_AS: 5681212 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 386168 kB
VmallocChunk: 34359345404 kB
HardwareCorrupted: 0 kB
AnonHugePages: 749568 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 8192 kB
DirectMap2M: 16611328 kB
在R中读取5.9GB csv文件后,内存消耗如下。 RAM几乎被完全使用(额外用完了大约13GB),9GB的SWAP也用完了。
After reading CSV file:
[xyz@master ~]$ cat /proc/meminfo
MemTotal: 16169156 kB
MemFree: 945528 kB
Buffers: 17996 kB
Cached: 243140 kB
SwapCached: 5924192 kB
Active: 12021068 kB
Inactive: 2918636 kB
Active(anon): 11969848 kB
Inactive(anon): 2758740 kB
Active(file): 51220 kB
Inactive(file): 159896 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 28631036 kB
SwapFree: 18888240 kB
Dirty: 68 kB
Writeback: 0 kB
AnonPages: 13982076 kB
Mapped: 58652 kB
Shmem: 50020 kB
Slab: 69332 kB
SReclaimable: 32176 kB
SUnreclaim: 37156 kB
KernelStack: 3304 kB
PageTables: 68284 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 36715612 kB
Committed_AS: 23674336 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 386168 kB
VmallocChunk: 34359345404 kB
HardwareCorrupted: 0 kB
AnonHugePages: 4655104 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 8192 kB
DirectMap2M: 16611328 kB
存储器使用中存在如此大的差异,即由R报告的一个和OS报告的另一个(我有CentOS)不明白。
我将很感激解释。