Project1

标题: 两个ruby使用的小问题 [打印本页]

作者: 有丘直方    时间: 2016-8-12 17:12
标题: 两个ruby使用的小问题
ruby的输入输出只能是字符串吗?
ruby中如何“销毁”(词穷)一个已经定义的变量?
应该是挺“简单”的问题吧。
作者: 喵呜喵5    时间: 2016-8-12 17:32
那你想输入输出什么?

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

作者: 喵呜喵5    时间: 2016-8-12 19:11
喵呜喵5 发表于 2016-8-12 17:32
那你想输入输出什么?

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

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

类似 IO 这些类是以二进制流读取文件的类
作者: 喵呜喵5    时间: 2016-8-13 21:39
本帖最后由 喵呜喵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楼那个问题

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

还是说你纯粹就是来和我吹毛求疵的?
作者: garfeng    时间: 2016-8-13 22:00
弄一个循环,每个循环内创建一堆大的对象,比如需要占用10K的字节,
这些对象都不要被其他的外部指针指向。
循环每秒钟跑10次(每个循环内等待1/10秒),然后让它跑一天。

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

这样就可以证明了。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1