问题在下面的代码中,我有几个 Go 例程,我面临的一个问题是“calculateMemoryUsage()”Go 例程,其中每半秒计算一次平均内存使用量。出于某种原因,总数不断给我奇怪的值。这是打印日志:Memory Usage: 162224Average: 162224Total: 162224Iteration Count: 1Memory Usage: 181200Average: 171712Total: 343424Iteration Count: 2Memory Usage: 187864Average: 119858Total: 359576Iteration Count: 3正如所见,从第三次迭代开始,平均值出现了混乱,因为总数没有正确添加。调试后,我看到内存使用情况读取良好,但总似乎给我带来了问题。我怀疑 GC,但是在这个问题中,LastGC 的值设置为 0,这意味着没有执行 GC。任何建议将不胜感激!:)代码func main() { db, err := sql.Open("mysql", "<credentials_removed>@@tcp(127.0.0.1:3306)/rts") err = db.Ping() if err != nil { panic(err.Error()) // proper error handling instead of panic in your app } showStocksChannel := make(chan bool) showBestPerformingChannel := make(chan bool) go calculateMemoryUsage() go showStocks(showStocksChannel, db) go changeStockPrices(showStocksChannel, showBestPerformingChannel, db) go displayBestPerformingStocks(showBestPerformingChannel, db) showStocksChannel <- true select{}}func calculateMemoryUsage() { var averageMemoryUsage uint64 = 0 var iterations uint64 = 0 var usage uint64 = 0 var total uint64 = 0 for iterations <= 200 { var memoryStats runtime.MemStats runtime.ReadMemStats(&memoryStats) iterations = iterations + 1 usage = memoryStats.Alloc total = (averageMemoryUsage + usage) averageMemoryUsage = total / iterations fmt.Printf("\nMemory Usage: %v\nAverage: %v\nTotal: %v\nIteration Count: %v\n\n", usage, averageMemoryUsage, total, iterations) time.Sleep(time.Millisecond * 1000) //fmt.Printf("\nLast GC: %v\nNext GC: %v\n\n", memoryStats.LastGC, memoryStats.NextGC) } fmt.Printf("\nAverage Memory Usage: %v bytes\n\n", averageMemoryUsage)}
- 1 回答
- 0 关注
- 178 浏览
添加回答
举报
0/150
提交
取消