java写的服务端 客户端程序,每有一个客户端登陆成功 就会生成一个类,10个就生成10个,n个会不会资源耗尽

用的多线程,是我理解上有问题吗?我是在bin里看到的,我做测试用登陆了n个账户,结果bin里出了很多clientsclass1,clientsclass2.......之... 用的多线程 ,是我理解上有问题吗?我是在bin里看到的,我做测试用 登陆了n个账户,结果bin里出了很多clientsclass1,clientsclass2.......之类的 。我就想啊 ,登陆的多了不就挂了吗 展开
 我来答
cainiaokan
2012-11-30 · TA获得超过2917个赞
知道小有建树答主
回答量:651
采纳率:66%
帮助的人:610万
展开全部
Socket服务端要同时处理来自多个客户端的请求,当然需要开启对应的多个线程进行通信。
这是没问题的。
每当有新的Socket连接建立时,就会开立一个匿名线程类对象。
这时候确实会产生一个匿名内部类的。
就想你说的clientsclass$1\clientsclass$2
但是,会不会产生类爆炸呢?就是说类越来越多,导致java虚拟机占用的内存爆掉。

我想是不会的。jvm当然不会这么傻。
类加载之后,的确是回占据jvm的方法区内存的。这没错。
方法区一般不是垃圾回收处理的重点区域。但不代表不会回收。
当客户端断开连接之后。客户线程结束。线程对象没有了。对应的匿名类不再被使用,
这个类也是会被垃圾回收器回收掉的。

而且,一台主机能够同时应对的连接数是很有限的。
我相信你在担心产生5000个匿名内部类会不会让JVM爆掉的话。
不如去担心这台主机能不能同时处理5000个连接。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式