- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个分配大量映射和 slice 的 Go 程序。通常有很多使用、分配开销等。我运行它,它加载大量数据,然后我使用 Web 服务查询它。
在我让它运行后,当它读入所有数据并且没有进行任何查询(即应该稳定)时,我看到内存波动。最近报道:5.42 GB、5.01 GB 和 4.3 GB 的实际内存。这是一个巨大的波动。
我有大约 1.5 亿个对象(卡在主哈希表之外的 slice )。那是很多小 object 。我预计会有一点波动(尽管我永远不会期望内存在没有分配新对象并且主线程阻塞在套接字上时增加)。
可能的解释是
这个波动量是否正常/预期?
最佳答案
go-runtime 不会立即将未使用的内存释放给操作系统(可能很快会再次需要)。因此,从操作系统层面来看,您只能看到整体情况的一部分。使用 http://golang.org/pkg/runtime/#ReadMemStats你可以看到图片的另一部分。
pkg/runtime/malloc.goc 显示空闲列表,pkg/runtime/mgc0.c 显示垃圾收集器。
如果内存使用率在看似正常的稳定情况下下降,加载完成后,您可以强制执行 GC,并且您可能希望定期打印 Memstats 以获取更多信息。
关于memory-management - 为什么我的 Go 程序内存波动这么大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21064426/
我面临一个非常奇怪的问题。 我想实现从DataTable中删除行的选项,因此实现了以下方法: onRemoveRow() { setState( () { last
我正在 JavaScript 中处理物理问题,并且我有一个值指示“物理”世界中的接触数量。这个值可以在0-6之间。问题是i波动很大。我想要的是过滤掉尖峰。假设该数字是 3,然后在不到一秒的时间内它会变
我在 C 中有两个静态可变变量,我想在逻辑语句中检查它们。但是,当我这样做时,我收到警告“未定义的行为:此语句 1037 中未定义 volatile 访问的顺序”是否有可能在很短的时间内暂停 C 变量
我是 C Sharp 的新手,正在使用 XNA Framework 编写游戏。我创建了一个项目,它是“Platformer”XNA 入门工具包的重大修改版本。 我看到(看似)随帧率随机波动。有时它会一
我是一名优秀的程序员,十分优秀!