为什么jvm不用协程实现 gc 呢?多线程太浪费资源了
为什么 jvm
不用协程实现 gc
呢?多线程太浪费资源了!
是因为 jvm
出生的时候,还没有协程吗?
GC是IO密集型任务,多线程会带来巨量的上下文切换和系统调用,协程可以避免上下文切换和避免绝大多数的系统调用
为了避免有些人争论什么是 IO 操作,我在此处声明:cpu 访问 内存、网络、硬盘都是 IO 操作。
回答:
jvm的多线程并不一定都是内核线程,也由用户级别的线程,这部分不需要切换内核。协程也不是什么银弹。协程更符合直觉,不需要什么同步操作,编写简单,但是一旦出现问题,直接就死了,这就不是浪费的问题了,而是凉凉。抢占式有补救的功能。
回答:
协程是高效利用线程,没有协程类的机制,线程要浪费时间在等IO上不干活
但是GC并不需要等IO,线程是全程干活的,于是协程也就没有任何优势了
以上是 为什么jvm不用协程实现 gc 呢?多线程太浪费资源了 的全部内容, 来源链接: utcz.com/p/944249.html