Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于服务端保存websocket.conn的疑惑 #13

Open
Owen-Zhang opened this issue Jul 14, 2020 · 2 comments
Open

关于服务端保存websocket.conn的疑惑 #13

Owen-Zhang opened this issue Jul 14, 2020 · 2 comments

Comments

@Owen-Zhang
Copy link

保存conn时用到了bucket, 这个在最下层还是使用了map
golang中的map有一个很大的问题:delete根本就没有真删除,只是标识了一下,也就是说内存根本就没有free
随着conn的进进出出,长时间运行下去这块内存是不是泄露了呢(内存会慢慢增加),这只是我的一个疑惑

note: 看map源码, 它实际有一个扩容机制,如果达到扩容条件时,会新建map底层数据(原来的内存就会被free),这样想想好像也不会存在上面的问题

望大哥说说你的想法呢

@LockGit
Copy link
Owner

LockGit commented Jul 14, 2020

golang本身是存在gc机制的语言,你也可以在逻辑中可以主动触发gc,如果你想验证map 内存问题,可以写个测试看看

@pathbox
Copy link

pathbox commented Oct 13, 2020

保存conn时用到了bucket, 这个在最下层还是使用了map
golang中的map有一个很大的问题:delete根本就没有真删除,只是标识了一下,也就是说内存根本就没有free
随着conn的进进出出,长时间运行下去这块内存是不是泄露了呢(内存会慢慢增加),这只是我的一个疑惑

note: 看map源码, 它实际有一个扩容机制,如果达到扩容条件时,会新建map底层数据(原来的内存就会被free),这样想想好像也不会存在上面的问题

望大哥说说你的想法呢

不会内存泄露。Golang GC的时候会把完全没有用到的内存释放。之前有做过go websocket的后端服务,正常情况不会有问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants