Java不能使用太字节RAM,因为GC暂停时间太长(几分钟).随着Go GC的最新更新,我想知道它的GC暂停是否足够短,可以使用大量的RAM,例如几兆兆字节.
这有什么基准吗?我们现在可以使用垃圾收集语言吗?
所以有:https://groups.google.com/forum/?fromgroups#!topic/golang-dev/Ab1sFeoZg_8:
今天我向垃圾收集器提交了更改,这些更改使得典型的最坏情况下的停止世界时间小于100微秒.这应该特别改善具有许多活动goroutine的应用程序的暂停,这可能会显着延长暂停时间.
如果JVM用户长时间挣扎,那么高GC暂停就是其中之一.
什么是(架构?)约束阻止JVM将GC暂停降低到Go级别,但是不影响Go?
在Go源代码的文件runtime/proc.go
中,有许多注释涉及安全点函数,它们似乎与垃圾收集安全的时间点相关.但是,我找不到这些功能的任何定义.
什么是安全点功能,它们用于什么,以及这些功能的一些示例是什么?
数百MB的内存分配给5 MB的50个请求。内存已分配,不再释放。如何清除记忆?为什么会发生这种情况?
我已经在家用PC和VPS上的Ubuntu上进行了尝试
package main
import (
"fmt"
"io/ioutil"
"net/http"
"time"
)
func main() {
fmt.Println("start")
for i := 0; i < 50; i++ {
go func() {
DoRequest()
}()
time.Sleep(10 * time.Millisecond)
}
time.Sleep(10 * time.Minute)
}
func DoRequest() error {
requestUrl := "https://blockchain.info/rawblock/0000000000000000000eebedea046425bd54626e6c56eb032e66e714d0141ea6"
req, err := http.NewRequest("GET", requestUrl, nil)
if err != nil {
return err
}
req.Header.Set("user-agent", "free")
httpClient := &http.Client{
Timeout: time.Second * 10,
}
resp, err := httpClient.Do(req)
if resp != nil {
defer resp.Body.Close() …
Run Code Online (Sandbox Code Playgroud)