今天看啥  ›  专栏  ›  聊聊架构

为什么能有上百万个Goroutines,却只能有上千个Java线程?

聊聊架构  · 公众号  · 架构  · 2018-07-21 21:32
    

文章预览

很多有经验的工程师在使用基于 JVM 的语言时,都会看到这样的错误: [error] (run-main-0) java.lang.OutOfMemoryError: unable to create native thread: [error] java.lang.OutOfMemoryError: unable to create native thread: [error]     at java.base/java.lang.Thread.start0(Native Method) [error]     at java.base/java.lang.Thread.start(Thread.java:813) ... [error]     at java.base/java.lang.Thread.run(Thread.java:844) 呃,这是由线程所造成的 OutOfMemory 。在我的笔记本电脑上运行 Linux 操作系统时,仅仅创建 11500 个线程之后,就会出现这个错误。 如果你在 Go 语言上做相同的事情,启动永远处于休眠状态的 Goroutines,那么你会看到非常不同的结果。在我的笔记本电脑上,在我觉得实在乏味无聊之前,我能够创建七千万个 Goroutines。那么,为什么 Gor ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览