只是想知道如何列出正在运行的 ruby 进程中使用的所有符号?最终想知道所有这些符号所占用的大小,以及是否有任何限制或如何限制它,或者当大小太大时是否应该担心它们
要查看全部:
Symbol.all_symbols
Run Code Online (Sandbox Code Playgroud)
参考:http ://ruby-doc.org/core-2.1.1/Symbol.html#method-c-all_symbols
我不确定如何找出他们使用了多少内存,或者是否有限制。但是,由于它们永远不会被垃圾收集,因此您应该担心它们。特别是,您绝对不应该允许将不受信任的用户输入转换为符号 - 这可能会导致您的应用程序内存不足。
作为将用户输入转换为符号的示例,想象一下将用户提供的字符串转换为符号的 Rails 操作:
Run Code Online (Sandbox Code Playgroud)def some_action my_sym = params[:p].to_sym # ... end
现在,有人可以通过请求数百万个网址,用任意数量的符号填充您的 ruby 进程空间,例如
http://your_app/some_action?p=a
http://your_app/some_action?p=b
http://your_app/some_action?p=c
...
Run Code Online (Sandbox Code Playgroud)
当内存不足时,可能(取决于很多事情)杀死你的服务器。
| 归档时间: |
|
| 查看次数: |
1360 次 |
| 最近记录: |