我愛學習網-上傳
當前位置: 主頁 > 文庫 > Java >

Golang與Java的區別

時間:2020-11-25 15:21來源:我愛學習網 作者:apple 點擊:

語言設計上的區別

  • 并發的區別
  • Go
  • 語言是天然的并發語言,運行在用戶態,處理器之間的上下文切換消耗可以非常低。
  • Go語言內部設計MPG模型,具體可以參見之前的文章「簡單概括Goroutine特點」
  • Goroutine大小默認是4kb
  • Goroutine大小會隨著占用內存多少而動態增加,不會固定大小,這樣也節省了內存的使用
  • Java
  • 多線程語言,需要OS內核參與線程間上下文切換,消耗性能
  • 線程大小默認1M,可以通過OSS進行線程大小配置,但是也遠小于Goroutine中默認的4kb。
  • Java線程大小設置好是固定的
  • 內存分配的區別
  • Go
  • 俗稱逃逸分析
  • 內存分配存在兩部分:第一部分是動態分配的全局堆,第二部分是運行在Goroutine中的局部棧
  • 人為無法通過特殊的途徑讓對象分布在某個區域(比如java中的new關鍵字)
  • 編譯時能判斷字段占用內存大小且明確生命周期的變量會分配在「局部?!怪?,其他情況會動態分配在「全局堆」
  • 棧分配比較便宜,堆分配比較貴;棧就只是棧內分配和棧內分解,堆需要垃圾回收
  • Java
  • new 關鍵字創建的對象全都分配在堆中,最終通過垃圾回收期進行回收
  • 垃圾收集   
  • Go
  • 三色法
  • 三色法的基礎上 增加了 混合寫屏障
  • 混合寫屏障:避免了對象變更引用時候被當做垃圾進行回收。
  • Java
  • 標記刪除
  • 復制刪除
  • 標記整理
  • CMS
  • G1
  • 垃圾收集器
  • Serial串行收集器,老年代是Serial Old,不會使用
  • Parallel Scavenge并行收集器,老年代是 Parallel Old。
  • CMS 收集器,運行在老年代;對應的新生代收集器是ParNew
  • G1保留分代收集的特點,增加Region區域,根據標記刪除的方式標記需要垃圾回收的Region,進行排序,根據Region由大到小排序 (排序的目的是可以清晰的知道哪些Region占用內存大),再根據垃圾回收所消耗的時間判斷 哪些Region需要優先回收。
  • 通訊方式
  • Go
  • 基于CSP原理,通過通訊來共享內存
  • Go中channel關鍵字
  • Java
  • 通過共享內存在通訊
  • 多線程之間需要用volatile 保證通向內存的可見性
------分隔線----------------------------
    ?分享到??
看看啦
主站蜘蛛池模板: 国产午夜毛片一区二区三区| 日韩精品一区二区三区不卡| 精品久久久久一区二区三区| 91一区二区三区四区五区| asmr国产一区在线| 久久人妻无码一区二区 | 高清一区二区三区视频| 日韩高清一区二区三区不卡 | 亚洲福利视频一区| 亚洲日本中文字幕一区二区三区| 精品国产福利一区二区| 日韩精品一区二区三区四区| 国产亚洲福利精品一区二区| 麻豆一区二区三区蜜桃免费| 人妻少妇精品视频一区二区三区 | 日本一区二区三区久久| 无码精品人妻一区二区三区人妻斩| 国产成人av一区二区三区在线| 无码一区二区三区亚洲人妻| 怡红院美国分院一区二区| 亚洲一区二区三区在线网站 | 国产精品一区二区三区久久| 日韩精品一区二区三区国语自制| 日韩一区二区超清视频| 精品一区二区三区东京热| 色偷偷久久一区二区三区| 一区二区三区日韩| 精品人妻AV一区二区三区| 人妻少妇精品视频三区二区一区| 91福利视频一区| 在线播放偷拍一区精品| 日本精品3d动漫一区二区| 日本中文字幕在线视频一区| 少妇人妻偷人精品一区二区| 国产精品美女一区二区视频| 91视频国产一区| 亚洲综合一区二区精品导航| 亚洲国产成人久久一区WWW| 精品国产鲁一鲁一区二区| 亚洲欧美日韩一区二区三区在线 | 亚洲福利一区二区|