为什么 jvm
不用协程实现 gc
呢?多线程太浪费资源了!
是因为 jvm
出生的时候,还没有协程吗?
GC是IO密集型任务,多线程会带来巨量的上下文切换和系统调用,协程可以避免上下文切换和避免绝大多数的系统调用
为了避免有些人争论什么是 IO 操作,我在此处声明:cpu 访问 内存、网络、硬盘都是 IO 操作。
为什么 jvm
不用协程实现 gc
呢?多线程太浪费资源了!
是因为 jvm
出生的时候,还没有协程吗?
GC是IO密集型任务,多线程会带来巨量的上下文切换和系统调用,协程可以避免上下文切换和避免绝大多数的系统调用
为了避免有些人争论什么是 IO 操作,我在此处声明:cpu 访问 内存、网络、硬盘都是 IO 操作。
4 回答1.4k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答741 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
jvm的多线程并不一定都是内核线程,也由用户级别的线程,这部分不需要切换内核。协程也不是什么银弹。协程更符合直觉,不需要什么同步操作,编写简单,但是一旦出现问题,直接就死了,这就不是浪费的问题了,而是凉凉。抢占式有补救的功能。