赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 469 |
最后登录 | 2021-2-21 |
在线时间 | 6 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 110
- 在线时间
- 6 小时
- 注册时间
- 2008-5-17
- 帖子
- 29
|
通过楼上几位的观点,我做了一些小试验,我觉得是不是这样的:
先看一个程序:
@num = 10
def aa
k = 0
loop do
array = [0,1,2,3,4,5,6,7,8,9]
k += 1
if k%100 == 0
k = 0
p 1
end
end
end
aa
这个里面有个数组array,运行后表明array应该是不断申请的,并没有完全释放再看一个程序:
@num = 10
def aa
k = 0
loop do
k += 1
if k%1000 == 0
k = 0
p 1
end
end
end
aa
用了%1000,但是运行后内存并没有增加
如上几楼所说的:
for i in 0..10
end
本質是:
i = nil
[0,1,2,3,4,5,6,7,8,9,10].each do |x|
i = x
end
说明for循环导致内存的增大是由于[0,1,2,3,4,5,6,7,8,9,10],不断调用而没有完全的释放掉
之后又出现这个问题:
看程序:
@num = 10
def aa
k = 0
loop do
array = [0,1,2,3,4,5,6,7,8,9]
k += 1
if k == 5000000
break
end
end
loop do
p 1
end
end
aa
在出现 1 之前,内存在增加,不过随后也在释放,说明RUBY里面数组还是有释放处理的.......
不知道是不是随着时间的推移或者数组量的过大,RUBY还是会进行一些内部处理来释放内存的
|
|