操作系统分配给每个进程的内存是有限制的,例如32位的Windows限制为2GB。虚拟机提供了参数来控制java堆和方法区(非堆)这两部分内存的最大值。则剩余的内存为2GB(操作系统限制)减去Xmx(最大堆容量)再减去MaxPermSize(最大方法区容量),程序计数器消耗内存很小可以忽略,剩下的内存就由虚拟机栈和本地方法栈瓜分了。所以,每个线程分配到的栈容量越大,可以建立的线程数自然就越少,建立线程时越容易把剩下的内存耗尽(摘自--深入理解java虚拟机2章)

最新文章

  1. NetCDF 入门
  2. java线程四种状态
  3. Java中接口式的匿名内部类的构造方法
  4. 【USACO】calfflac
  5. VC更换图标文件
  6. hibernate的第一个程序
  7. Java基础知识强化之集合框架笔记31:集合之泛型类的概述和基本使用
  8. 限制ITEM读取其它物料的物料描述
  9. 基于visual Studio2013解决算法导论之019栈实现(基于数组)
  10. myeclipse一直停留在Loading workbench界面上的处理办法
  11. Windows kafka_2.11-1.1.0安装
  12. kubelet工作原理
  13. Nlog 简单的快速攻略
  14. org.apache.catalina.LifecycleException错误解决方案
  15. python 之 递归
  16. lanmp环境中创建个软连接
  17. PHP学习笔记(一)
  18. Struts2将图片输出到页面
  19. 监控Linux的Steps&Q&A
  20. PL/SQ连接oracle,L 新建表的时候, virtual那一列是什么意思

热门文章

  1. Java——类的成员之五:内部类
  2. 管理员技术(七): Linux管理员 综合测试
  3. [NOIP模拟测试3] 建造游乐园 题解(欧拉图性质)
  4. Hadoop部署项目总结&&解析缓存文件
  5. (10)centos7 包管理、远程传文件
  6. 剑指offer第二版面试题4:替换空格(JAVA版)
  7. VIM查找空格
  8. Spark中的多线程并发处理
  9. 从可变长函数到legb
  10. 使用promise构建一个向服务器异步数据请求