首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby进程内存结构

Ruby进程内存结构
EN

Stack Overflow用户
提问于 2017-07-25 01:02:03
回答 1查看 434关注 0票数 1

我正在尝试找出ruby进程中内存使用的问题。我尝试使用ObjectSpace模块对ruby进程进行堆转储,以了解发生了什么。令人费解的是,linux中的"top“命令报告该进程使用17.8 GB的虚拟内存和15 GB的常驻内存。但是,堆转储的大小只有2.7-2.9 GB。

基于Ruby文档,Objectspace.dump_all方法将ruby堆的内容转储为JSON。

我不能理解是什么占用了剩余的内存。如果有人能帮我理解发生了什么,那就太好了。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-25 03:18:48

您的应用程序很可能正在分配对象,然后由垃圾收集器整理这些对象。您可以使用a call to GC.stat检查这一点

Ruby does not release memory back to the operating system以任何有意义的方式。(如果您正在运行MRI)因此,如果您分配了18 3GB的内存,并对15 3GB的内存进行了垃圾回收,那么您最终将得到大约3 3GB的堆数据。

Ruby MRI GC不是压缩垃圾收集器,所以只要堆中有任何数据,堆就不会被释放。这会导致内存碎片和您在应用程序中看到的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45286197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档