kfm*_*e04 2 garbage-collection go
这样的语言是可行的还是有特定的功能,绝对需要某种形式的gc?
注意:我不是反gc,但是来自C/C++背景并且在实时服务器应用程序上工作,我更喜欢保持一定程度的控制如何以及何时收获内存(不能有10s垃圾 - 在现场运行中发生的收集).
鉴于我的要求,我的担忧是否切合实际?或者go gc如此之好以至于我的担忧是没有根据的?
Go的gc是我唯一一个关于尝试使用我的C++实时服务器端口的保留.
使用可选GC需要更改语言.这是一个完全有效的Go函数,它将使C程序员的皮肤爬行:
func foo() *int {
a := 1
return &a
}
Run Code Online (Sandbox Code Playgroud)
这很好,因为Go编译器会发现a
需要在堆上分配变量.它将在以后进行垃圾收集,您无需关心.(好吧,好吧,在某些情况下你可能.但是大多数时候你没有.)
您可以编写各种编译器将执行此类操作的方案.没有垃圾收集器就不一样了.
您可以采取一些措施来帮助GC时间,但在某种程度上,您将无视该语言的优势.我对推荐这些做法犹豫不决,但可以选择:
最重要的是,对于具有硬实时要求的应用程序来说,Go可能不是一个好的选择.也就是说,我也不认为你会看到任何接近10秒垃圾收集的东西.考虑一下您的要求是什么,如果您有任何疑问,请进行一些测量.
如果可以,请尝试最新的Go代码.有一些垃圾收集器改进和一些编译器优化导致更少的分配.但是,如果您的发布时间较短,您可能会坚持使用当前的稳定版本几个月.
归档时间: |
|
查看次数: |
1907 次 |
最近记录: |