首页 > 解决方案 > 解释 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

标签: gomemorymemory-leaks

解决方案


推荐阅读