C#在dll中调用go函数,在.Net Core中是运行,go分配的非托管内存会被Garbage Collected吗?
C# calls go function within dll, and it's running in .Net Core, will the unmanaged memory allocated by go gets Garbage Collected?
我用Go写了一个文件传输接口,接受本地路径和远程服务器信息,然后按块传输文件。情况是我想在 C# 中使用它,我了解到 Go 可以内置到 C-Shared dll 中并在 C# 中使用 P/Invoke 调用。我想知道go分配的非托管内存会不会垃圾回收?如果没有,有没有办法释放这部分内存?
垃圾收集器不会知道 Go 代码的非托管内存。
如果你想释放它你应该在Go代码中管理它,或者至少准备一个在C#中调用的函数并处理非托管内存。
我的建议是:
- Go 中释放内存的函数
- 然后当你想释放对象时在 C# 中调用这个函数。
我用Go写了一个文件传输接口,接受本地路径和远程服务器信息,然后按块传输文件。情况是我想在 C# 中使用它,我了解到 Go 可以内置到 C-Shared dll 中并在 C# 中使用 P/Invoke 调用。我想知道go分配的非托管内存会不会垃圾回收?如果没有,有没有办法释放这部分内存?
垃圾收集器不会知道 Go 代码的非托管内存。
如果你想释放它你应该在Go代码中管理它,或者至少准备一个在C#中调用的函数并处理非托管内存。
我的建议是:
- Go 中释放内存的函数
- 然后当你想释放对象时在 C# 中调用这个函数。