一个进程可以开启的
线程受可用内存限制,如果是32位的机器,那么默认一个进程有2G的可用内存,而每个线程默认分析1M的栈空间,所以这种情况下理论最线程数在2000多个。一个解决法是创建线程时减少线程栈的大小或是使用64位的系统。64位系统应该...1。java的线程开启,默认的虚拟机会分配1M的内存,但是在4G的windows上线程最多也就开到300多 ,是因为windows本身的一些限制导致。2。虚拟机给每个线程分配的内存(栈空间)是由虚拟机参数-Xss来指定的,在不同平台上对应的默认大小可以 在oracle的官方文档上查询到:
http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman /optionX.html其中,Linux64位默认Xss值为256K,并非1M或10M3。一个Java进程可以启动的线程数可以通过如下公式计算: (系统剩余内存 - 最大堆容量Xmx - 最大方法区容量MaxPermSize)/ 最大栈空间Xss这样,4G的
服务器单个进程可以开多少线程,可以粗略计算出来,大概是5000个线程。理论上可用虚拟空间是2G,默认情况下,Thread的栈的大小是1MB,所以理论上最多只能创建2048个Thread,这个栈的大小默认值是编译器预设的,你也可以改.你这个不是问题的,服务器只是用于一座桥的作用,并不提供具体通讯,一般做法是这样的:
用户1进入服务器,给他一个标记结构,比如包含用户1的IP+他的可用端口.....用户2进来也这么做,用户1跟用户2对话:::服务器给发起请求的用户安排任务,,,给目标IP+Port发送信息,这样服务器自己不出线程资源和端口资源...
不过呢,你是要做C/S架构还是B/S架构??
评论列表(0条)