Golang与Java的区别(语言设计、并发、内存分配、垃圾收集、通讯方式对比)

0oD三一o0

温馨提示:这篇文章已超过718天没有更新,请注意相关的内容是否还可用!

语言设计上的区别

并发的区别

Go

  • 语言是天然的并发语言,运行在用户态,处理器之间的上下文切换消耗可以非常低。

  • Go语言内部设计MPG模型,具体可以参见之前的文章「简单概括Goroutine特点」

  • Goroutine大小默认是4kb

  • Goroutine大小会随着占用内存多少而动态增加,不会固定大小,这样也节省了内存的使用

Golang与Java的区别(语言设计、并发、内存分配、垃圾收集、通讯方式对比)

Java

  • 多线程语言,需要OS内核参与线程间上下文切换,消耗性能

  • 线程大小默认1M,可以通过OSS进行线程大小配置,但是也远小于Goroutine中默认的4kb。

  • Java线程大小设置好是固定的

Golang与Java的区别(语言设计、并发、内存分配、垃圾收集、通讯方式对比)

内存分配的区别

Go

俗称逃逸分析

  • 内存分配存在两部分:第一部分是动态分配的全局堆,第二部分是运行在Goroutine中的局部栈

  • 人为无法通过特殊的途径让对象分布在某个区域(比如java中的new关键字)

  • 编译时能判断字段占用内存大小且明确生命周期的变量会分配在「局部栈」中,其他情况会动态分配在「全局堆」

  • 栈分配比较便宜,堆分配比较贵;栈就只是栈内分配和栈内分解,堆需要垃圾回收

Java

  • new 关键字创建的对象全都分配在堆中,最终通过垃圾回收期进行回收

垃圾收集   

Go

三色法

  • 三色法的基础上 增加了 混合写屏障

  • 混合写屏障:避免了对象变更引用时候被当做垃圾进行回收。

Java

  1. 标记删除

  2. 复制删除

  3. 标记整理

  4. CMS

  5. G1

垃圾收集器

  • Serial串行收集器,老年代是Serial Old,不会使用

  • Parallel Scavenge并行收集器,老年代是 Parallel Old。

  • CMS 收集器,运行在老年代;对应的新生代收集器是ParNew

G1保留分代收集的特点,增加Region区域,根据标记删除的方式标记需要垃圾回收的Region,进行排序,根据Region由大到小排序 (排序的目的是可以清晰的知道哪些Region占用内存大),再根据垃圾回收所消耗的时间判断 哪些Region需要优先回收。

通讯方式

Go

  • 基于CSP原理,通过通讯来共享内存

  • Go中channel关键字

Java

  • 通过共享内存在通讯

  • 多线程之间需要用volatile 保证通向内存的可见性


免责声明:本文来自我爱学习网,不代表0oD三一o0的观点和立场,如有侵权请联系本平台处理。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (有 20 条评论,774人围观)
网友昵称:访客
访客 V 游客 沙发
07-16 回复
货源网站一件代发货源网 **s://www.kuuv.cn
网友昵称:游客
游客 V 游客 椅子
07-16 回复
看在楼主的面子上,认真回帖!**://vypinace-zasuvky.com/news/67c099871.html
网友昵称:游客
游客 V 游客 板凳
07-18 回复
你觉得该怎么做呢?**://www.getti.cn/215639.html
网友昵称:游客
游客 V 游客 凉席
07-19 回复
很有看点!**://ulu.blog.getti.cn
网友昵称:游客
游客 V 游客 地板
07-19 回复
论坛的帖子越来越有深度了!**://ghdby.com/news/04c099934.html
网友昵称:游客
游客 V 游客 6楼
07-19 回复
写的太好啦,评论一个**://to4q9.wxchangjie.com
网友昵称:访客
访客 V 游客 7楼
07-20 回复
安福鞋 **s://www.b0594.com
网友昵称:游客
游客 V 游客 8楼
07-22 回复
楼主是一个神奇的青年!**://dk76j.xhguofa.com/34/5.html
网友昵称:游客
游客 V 游客 9楼
07-22 回复
态度决定一切,不错!**://hxhbm.com/553707.html
网友昵称:游客
游客 V 游客 10楼
昨天 回复
被楼主的逻辑打败了!**://www.indaseg.com/a/a/3075.html
网友昵称:游客
游客 V 游客 11楼
今天 回复
今天怎么了,什么人都出来了!**://xgduh.wfwjgc.com/B/3.html
取消
微信二维码
微信二维码
支付宝二维码