Go 初学者,有没有老哥能告诉我在写代码的时候应该如何避免内存泄漏的问题

2024-08-30 20:13:06 +08:00
 bunny189

万分感谢! 并不是想 100%避免,只是希望少点蠢代码……

6471 次点击
所在节点    Go 编程语言
39 条回复
bunny189
2024-08-30 20:26:25 +08:00
目前已经写完一个项目,即将上服务器(有固定人流量),所以有点紧张,想临上线前看看有没有出一些愚蠢低级的错误()
DefoliationM
2024-08-30 20:27:25 +08:00
go 有 gc ,何来内存泄漏一说。逻辑问题你只能写代码时看清楚吧。
R4rvZ6agNVWr56V0
2024-08-30 20:34:26 +08:00
R4rvZ6agNVWr56V0
2024-08-30 20:36:11 +08:00
ashin
2024-08-30 20:37:31 +08:00
定时重启 /狗头
bunny189
2024-08-30 20:44:51 +08:00
@GeekGao 谢谢好心人,我对照着自查一下❤️!
@ashin 难道他真是天才??!
virusdefender
2024-08-30 20:44:51 +08:00
线上默认把 pprof 打开,别到时候发现泄露了还得重新编译
Trim21
2024-08-30 20:46:42 +08:00
你不用 unsafe ,不用 arena 之类的东西的话一般不会有内存泄漏。一般泄漏的都是 fd 、socket 、goroutine 之类的东西。
James369
2024-08-30 20:56:09 +08:00
写完让 ChatGpt 检查一下
mightybruce
2024-08-30 21:03:58 +08:00
一般使用 go 的一些静态检查分析工具,过滤掉大多数问题代码,go vet 工具
tuiL2
2024-08-30 21:16:26 +08:00
golang 能写出内存泄露,应该也挺不容易的吧
maigebaoer
2024-08-30 21:21:13 +08:00
一般泄露的都是全局资源,小项目挺难遇到的
bruce0
2024-08-30 21:32:30 +08:00
我唯一遇到过一次的 go 内存泄漏是 goroutine 工作完成后没有结束(被阻塞了) 然后相关的资源都没有释放, 别的基本遇不到内存泄漏
povsister
2024-08-30 21:38:47 +08:00
go 一般是资源泄露,用 goroutine 前想想这个东西的生命周期就能避免大多数情况。
donaldturinglee
2024-08-30 23:02:59 +08:00
go 的垃圾回收还是很健壮的,非常规问题不考虑内存泄漏
Ipsum
2024-08-30 23:06:52 +08:00
别再 for 里用 time.after
higker
2024-08-30 23:20:20 +08:00
建议你使用 Java21 版本 和 graalvm.org 这种多语言虚拟机,可以管理多语言跑多语言,管理内存分配。
securityCoding
2024-08-31 00:14:36 +08:00
go lint 扫一下,profile 看看内存和协程数量
kneo
2024-08-31 01:30:12 +08:00
你在这发有啥用?赶紧上线啊。让用户帮你测试。
lingo
2024-08-31 01:37:26 +08:00
我 go 项目有用到 cgo ,没想到用的那个 cgo 库居然自带内存泄露。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1069135

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX