1万个线程占用多大内存?

栈大小? -Xss   jinfo -flag ThreadStackSize

帧大小? 和方法中的局部变量,对象个数有关系

栈深度?

方法的进出分别对应一个入栈和出栈

 

-Xss512k    这个值越大,栈深度max-stacks越大,递归的次数越大, 但是整体支持线程数越小

 

那么一个线程占用多大的栈内存?       线程只有在运行中才会占用栈?  Sleep的线程不占用栈?

linux 64上默认栈大小1M ,    4000*1M=4G,   4000TPS/QPS? 真实并发,非连接数

                  10000*1M=10G ,   按1/10活动量,对应单台连接数可以达到10W, 实际端口最大6w

堆区+方法区越大,运行时空间(栈)越小  一台32G内存的机器,分给栈空间可能只有5G

 

 

 

 

http://unixboy.iteye.com/blog/174173

https://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html

http://www.10tiao.com/html/677/201612/2650886922/1.html

转载于:https://www.cnblogs.com/yszzu/p/10021531.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
处理大规模数据时,可以采取以下几种方法来提高效率: 1. 批量处理:将大规模数据分批处理,避免一次性处理所有数据。可以将数据按照一定的规模划分为多个批次,逐批进行处理。这样可以降低单次处理的数据量,减少内存占用和处理时间。 2. 并行处理:利用多线程或分布式计算等方式进行并行处理,同时处理多个数据块。通过并行处理,可以充分利用多核CPU或多台机器的计算资源,加快处理速度。 3. 数据索引优化:对于需要频繁查询和筛选的字段,可以创建索引以提高查询效率。索引可以加快数据的查找速度,减少系统的IO操作。 4. 数据预处理:在导入数据之前,进行必要的预处理操作,如去除无效数据、修复错误数据、标准化数据格式等。通过预处理可以减少后续处理的数据量和复杂度,提高整体处理效率。 5. 垂直拆分和水平拆分:如果可能,可以将大规模数据按照业务或其他逻辑进行垂直拆分或水平拆分。垂直拆分是将不同业务或功能的数据存储在不同的表或数据库中,水平拆分是将数据按照某个维度进行划分存储在不同的表或数据库中。这样可以减少单个数据表的数据量,提高查询和处理效率。 6. 使用高性能数据库:选择适合大规模数据处理的高性能数据库,如分布式数据库或列式数据库等。这些数据库通常具有更好的扩展性和并发性能,能够更好地应对大规模数据的处理需求。 7. 缓存优化:对于经常被查询的数据,可以使用缓存技术将其缓存到内存中,减少数据库查询的次数,提高查询效率。 需要根据具体情况综合考虑以上方法,并结合系统架构、硬件资源等进行合理的优化。同时,注意在处理大规模数据时要进行性能测试和监控,及时发现和解决潜在的性能问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值