本來想打算用go來處理一個1G左右的txt文本的,但是在去讀取的時候就報內存溢出了,提示數組已經無法在分配。
用的是:ioutil.ReadFile 方法來讀取文本,它的返回值是一個[]byte 數組,內存溢出的原因就是[]byte數組已經超過最大限度值了,於是就想探清一下 go 到底能給[]byte分配多長的數組
var arry [804254644]byte log.Println("讀取完畢", len(arry))
很簡單的一段代碼,就是一個簡明的聲明,不做任何其他的處理,經過不斷的調試,發現聲明的數組長度如果大於 804254644 這個長度的就會報異常,小於的則正常,難道 804254644 就是 go 的[]byte的最大長度?
本人的機器是4G內存,[804254644]byte的容量大致是 766M ,這也太小了吧,難道谷歌就只能讓他的go最大只能處理766M的文件? 但願還是我的環境問題而不要是go的問題