当前位置:  开发笔记 > 编程语言 > 正文

CPU周期和内存中线程的粗略"成本"是多少?

如何解决《CPU周期和内存中线程的粗略"成本"是多少?》经验,为你挑选了1个好方法。

在java中使用线程的粗略"成本"是多少?是拇指/经验值的任何规则,一个线程的创建需要多少内存?是否粗略估计创建线程需要多少CPU周期?

上下文:在Web应用程序的servlet中,我希望并行化内容创建,因为内容的一部分是基于文件的,基于数据库的以及基于Web服务的.但这意味着对于每个"http-request-thread"(我的serlvet容器),我将有两到四个额外的线程.请注意,我将使用ExecutorServiceJava 6中的.

当我在Web服务器上使用数百到数千个Java线程时,我应该期待什么?



1> Brian Agnew..:

每个线程都有自己的堆栈,因此会立即产生内存影响.对于Java 6,512k,默认线程堆栈大小为IIRC(不同的JVM /版本可能具有不同的默认值).该图可使用该-Xss选项进行调整.因此,使用数百个线程将对VM消耗的内存产生影响(很可能在任何CPU影响之前,除非这些线程正在运行).

我见过客户遇到与线程/内存有关的问题,因为它不是一个明显的链接.创建100,000个线程(使用执行程序/池等)是微不足道的,并且内存问题似乎不会立即归因于此.

如果您为许多客户端提供服务,您可能需要查看Java NIO API,特别是多路复用,它允许异步网络编程.这将允许您只使用一个线程处理许多客户端,从而减少对大量线程的需求.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有