java最大线程数

-Xms

初始堆大小。如:-Xms256m

-Xmx

最大堆大小。如:-Xmx512m

-Xmn

新生代大小。通常为 Xmx 的 1/3 或 1/4。新生代 = Eden + 2 个 Survivor 空间。实际可用空间为 = Eden + 1 个 Survivor,即 90%

-Xss

JDK1.5+ 每个线程堆栈大小为 1M,一般来说如果栈不是很深的话, 1M 是绝对够用了的。

-XX:NewRatio

新生代与老年代的比例,如 –XX:NewRatio=2,则新生代占整个堆空间的1/3,老年代占2/3

-XX:SurvivorRatio

新生代中 Eden 与 Survivor 的比值。默认值为 8。即 Eden 占新生代空间的 8/10,另外两个 Survivor 各占 1/10

-XX:PermSize

永久代(方法区)的初始大小

-XX:MaxPermSize

永久代(方法区)的最大值

-XX:+PrintGCDetails

打印 GC 信息

-XX:+HeapDumpOnOutOfMemoryError

让虚拟机在发生内存溢出时 Dump 出当前的内存堆转储快照,以便分析用

32位系统对进程的大小有限制,64位没有,也就是说,64位系统可以用一个进程占满接近整个系统的内存
操作系统分配给每个进程的内存大小是有限制的,比如32位的Windows是2G。因此操作系统对一个进程下的线程数量是有限制的,不能无限的增多。经验值:3000-5000左右
64位系统下:
一个java程序可以配置其初始堆内存(默认1/64),最大堆内存(默认1/4),初始方法区内存(默认1/64),最大方法区内存(默认1/4),一个虚拟机栈的大小(默认1m),对应的参数为:Xms,Xmx,PermSize,MaxPermSize,Xss.
注意:物理内存中的虚拟机栈的总内存不用配置,最大值就是系统剩余物理空间

可开最多线程数目:物理内存线程数+虚拟内存线程数
当物理内存不够时,用虚拟内存开辟虚拟机栈空间。
虚拟内存线程数: 剩余虚拟内存大小/Xss一个虚拟机栈大小
用户虚拟空间/虚拟机栈大小,虚拟机栈越小,产生栈溢出异常的可能就越大(可以捕捉到),系统的最大线程数是用户层定义配置的,所以为了防止线程过多造成线程切换的过多开销,需要合理设置系统最大线程数。
物理内存线程数:(系统剩余内存 - 最大堆容量Xmx - 最大方法区容量MaxPermSize)/ 最大栈空间Xss)

线程多了,就会有线程切换,消耗cpu,所以用线程池规定线程最大容量,并且重复利用线程空间可以减少创建和销毁线程带来的额外消耗

linux系统64位默认虚拟用户空间为128T。
虚拟内存是默认pagefile.sys安装在c盘的极大文件,只有当物理内存不够才会使用到虚拟内存,并且虚拟内存一般用于占据内存较大但是不经常调用的情况,有写大型软件需要虚拟内存的支持,但开发中,更多使用物理内存,特殊情况需要虚拟内存支撑,因为虚拟内存读到内存中也需要开销。
虚拟内存用时间换空间,服务器应该更多关注cpu性能,用空间换时间。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值