开发多线程应用注意

开发多线程应用注意

例如:32位的Window限制为2GB。虚拟机提供了参数来控制Java堆和方法区的这两部分内存的最大值。
2GB(操作系统限制)减去Xms(最大堆容量),再减去MaxPermSize(最大方法区容量),程序计数器消耗内存很小(忽略不计)。如果虚拟机进程本省耗费的内存不在技算之内, 剩下的内存就由 虚拟机栈本地方法栈“瓜分”了。每个线程分配到的栈容量越大,可以建立的线程数量自然就少了,建立线程时就越容易把剩下的内存耗尽。
虚拟机在默认参数,栈深度在大多数情况下(以为每个方法压入栈的帧大小并非不是一样的,所以只能说在大多数情况下)到达1000~2000完全没有问题,对于正常的方法调用(包括递归),这个深度应该可以够用了。但是,如果建立过多线程导致的内存溢出,在不能减少线程数或者更换64位虚拟机的情况下,就只能通过减少最大栈和减少栈容量来换取更多的线程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值