前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言内存的管理

R语言内存的管理

作者头像
一粒沙
发布2019-07-31 14:46:53
5.5K0
发布2019-07-31 14:46:53
举报
文章被收录于专栏:R语言交流中心R语言交流中心

R语言中内存是我们平时不怎么注意的一个方面,但是R语言的内存占有率还是很高的。尤其是在对大型数据的处理过程中,每当你复制你的变量或者创建新的变量都会占用新的内存空间。当然Windows系统中R语言会自动去调节自身的内存占用与释放。然而,当大量数据在调用批处理函数的时候内存的自动管理显得很是无力。R中的对象在内存中存于两种不同的地方,一种是堆内存(heap),其基本单元是“Vcells”,每个大小为8字节,新来一个对象就会申请一块空间,把值全部存在这里,和C里面的堆内存很像。第二种是地址对(cons cells),和LISP里的cons cells道理一样,主要用来存储地址信息,最小单元一般在32位系统中是28字节、64位系统中是56字节。

下面我们介绍R语言中内存管理的函数以及相对应的包:

函数:

1. memory.size() 当前工作空间内存的占有情况。

2. rm( object ) 删除占内存的变量

3. gc() 清空缓存空间,防止在rm() 后未释放的空间。

4. ls() 列出当前工作空间的所有变量。

5. object.size(object) 查看变量所占的内存

6. memory.limit()查看系统规定的内存使用上限。如果你认为现在的内存上限不够用,可以通过memory.limit(newLimit)更改到一个新的上限。

R包:

1. R包pryr。主要对内存管理,更加方便监控内存。其中的函数:

a. mem_used() 等同于memory.size().但是会带有单位

b. mem_change(命令) 查看执行命令时,内存的变化。

c. object_size(object) 进行了单位的换算

d. storage.mode(x) 查看x的存储模式

2. R包lineprof。它会告诉你哪一行的代码消耗了多少时间、内存,释放多少内存,复制了多少向量.不过目前只支持Linux下的版本

代码案例:

library(lineprof)

prof <- lineprof(sum(c(1:23000760)))

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言交流中心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档