go - 解释 Go 中游戏的内存使用情况
问题描述
我在我的游戏中添加了内存分析,当查看统计数据时,我可以看到如下内容:
# runtime.MemStats
# Alloc = 1022232
# TotalAlloc = 14369528
# Sys = 72286456
# Lookups = 0
# Mallocs = 192759
# Frees = 184964
# HeapAlloc = 1022232
# HeapSys = 66519040
# HeapIdle = 64667648
# HeapInuse = 1851392
# HeapReleased = 61906944
# HeapObjects = 7795
# Stack = 589824 / 589824
# MSpan = 29920 / 65536
# MCache = 6944 / 16384
# BuckHashSys = 1444778
# GCSys = 2377728
# OtherSys = 1273166
# NextGC = 4194304
# LastGC = 1571576758413809106
# PauseNs = [136190 27071 23449 40823 35342 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
# PauseEnd = [1571576480170696886 1571576526952274688 1571576646967831188 1571576688475083354 1571576758413809106 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
# NumGC = 5
# NumForcedGC = 0
# GCCPUFraction = 2.6422038270754447e-06
# DebugGC = false
我相信我有内存泄漏,但我很难确定执行它的确切代码。我相信我有泄漏,因为我可以“暂停”游戏,当我这样做时,我基本上只是继续游戏循环,但我什么都不做(我不在屏幕上绘制或创建新对象)但我可以看到TotalAlloc保留的字段永远增长和增长,所以我认为肯定有什么地方是错的,对吧?
这是我的代码:https ://github.com/Matias-Barrios/SDL_Universe/blob/master/main.go
解决方案
推荐阅读
- c# - 将 AttributeData 转换为已知的属性类型 Roslyn
- collision - 圆碰撞解决 - 静态碰撞
- python - torch.cat的逆向操作
- javascript - 为什么在 Chart.js 中放置两个带有时间笛卡尔轴的数据集会导致两个 Y 轴刻度集?
- python - Django,从主题中获取所有帖子
- python - “从烧瓶导入烧瓶”中的语法错误
- redis - 带有 TYPE 选项的 SCAN 命令与 Lua 脚本之间的时间复杂度差异
- javascript - Django - Chart.js 不返回任何内容
- curl - 带有多个参数的 JAX RS 和 application/x-www-form-urlencoded
- emacs - Emacs 是否可以像 Elisp 函数一样在 echo 区域显示 Erlang 函数?