设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1636|回复: 13
打印 上一主题 下一主题

[已经过期] 两个ruby使用的小问题

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1939
在线时间
403 小时
注册时间
2015-8-30
帖子
395
跳转到指定楼层
1
发表于 2016-8-12 17:12:49 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
ruby的输入输出只能是字符串吗?
ruby中如何“销毁”(词穷)一个已经定义的变量?
应该是挺“简单”的问题吧。
小仙女一枚~

Lv4.逐梦者

梦石
2
星屑
5550
在线时间
2566 小时
注册时间
2012-2-9
帖子
990

开拓者

5
发表于 2016-8-13 22:00:42 | 只看该作者
弄一个循环,每个循环内创建一堆大的对象,比如需要占用10K的字节,
这些对象都不要被其他的外部指针指向。
循环每秒钟跑10次(每个循环内等待1/10秒),然后让它跑一天。

如果没回收,86400 * 10 * 10K = 8.64G内存,
试试看你的任务管理器里的该进程内存占用吧。

这样就可以证明了。

点评

糟糕,我用iPad,这是一个奇怪的ruby版本,而且“p RUBY_VERSION”会引发错误。  发表于 2016-8-14 15:06
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

4
发表于 2016-8-13 21:39:54 | 只看该作者
本帖最后由 喵呜喵5 于 2016-8-13 21:52 编辑
喵呜喵5 发表于 2016-8-12 19:11
你为什么要证明或者判断变量是否被回收?变量被回收与否对你的代码来说会产生任何影响吗?

类似 IO 这些 ...


文件不就特么是二进制流,另外,“读出”是什么意思???到底是读入还是输出???

以及,无数的程序员都在庆幸编程语言的发展自己不需要去关注变量是否被回收以及内存管理,你却想要自己去跳这么浪费生命浪费时间一个大坑,不是很理解你到底是怎么想的

你要证明变量被回收很简单啊,RGSS 里面,sprite 不是用 Ruby 实现的而是用 C 实现的,C 不像 Ruby,你用完了 sprite 之后不 dispose 的话,内存还是占用在那里的
然后,你就别 dispose 了,就这样运行一会 Ruby 代码,当系统报错“内存溢出”时,就说明 Ruby 已经回收了某个 sprite 占用的内存了(Ruby回收了,C没回收,因此内存溢出)

然而吧,还是2楼那个问题

究竟什么样的应用场景会让你去关注内存是否回收了?

还是说你纯粹就是来和我吹毛求疵的?

评分

参与人数 1星屑 +100 收起 理由
garfeng + 100 摸头,息怒息怒

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

3
发表于 2016-8-12 19:11:39 | 只看该作者
喵呜喵5 发表于 2016-8-12 17:32
那你想输入输出什么?

以及,Ruby 哪来的销毁操作,当某个变量无法通过任何方式获取的时候他就会自动被垃 ...

你为什么要证明或者判断变量是否被回收?变量被回收与否对你的代码来说会产生任何影响吗?

类似 IO 这些类是以二进制流读取文件的类

点评

...件之类的。那么既然是读取二进制流的,那么可以输入字符串意外的吧,但是输出…IO的中文意思就是“输入输出”,那么为什么只能读取不能读出?  发表于 2016-8-13 21:02
嗯,如果“这个变量被回收”不能被证明或证伪,它就是不可知的,就无意义了。无意义就不管它了吧。IO原来就是干这个的啊,我一直以为是读取文...  发表于 2016-8-13 20:59
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

2
发表于 2016-8-12 17:32:23 | 只看该作者
那你想输入输出什么?

以及,Ruby 哪来的销毁操作,当某个变量无法通过任何方式获取的时候他就会自动被垃圾收集了

点评

头一次听说动态分配内存,刚百度了一下,还真有!一直不知道,孤陋寡闻了。  发表于 2016-8-13 14:09
哪来的那么复杂,就是单纯的垃圾回收,动态分配内存,如果发现某个变量已经再也无法使用时那部分内存就自动回收复用  发表于 2016-8-13 14:02
我不知道Ruby语言中有没有回收这个概念。但是在Pascal语言中,定义一个变量后就在内存中为他分配储存空间,Ruby应该也是这样的。重定义也许可以吧。  发表于 2016-8-13 13:55
...此,你的回答可以说是“无意义”的啊。  发表于 2016-8-12 18:49
我无法证明一个变量是否被回收啊。如果我要调用一个函数来看它是否被回收,那必定调用了这个变量,返回值必定是false;不调用,就无法知道。因...  发表于 2016-8-12 18:49
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 21:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表