jvm中使用了三种不同类型的内存区域:Permanent Generation space(永久保存区域)、Heap space(堆区域)、Java Stacks(Java栈)。

其中永久保存区域主要存放Class(类)和Meta的信息,Class第一次被Load的时候被放入PermGen space区域,Class需要存储的内容主要包括方法和静态属性。 堆区域用来存放Class的实例(即对象),每次用new创建一个对象实例后,对象实例存储在堆区域中,这部分空间也被jvm的垃圾回收机制管理。 Java栈主要保存方法中的基本类型的局部变量,对象的引用。Java程序的每个线程中都有一个独立的堆栈。容易发生内存溢出问题的内存空间包括:Permanent Generation space和Heap space。

第一种OutOfMemoryError: PermGen space 这种情况发生的原因是程序中使用了大量的jar或class,使java虚拟机装载类的空间不够,与Permanent Generation space有关。
解决这类问题有以下两种办法:
1. 增加java虚拟机中的XX:PermSize和XX:MaxPermSize参数的大小,其中XX:PermSize是初始永久保存区域大小,XX:MaxPermSize是最大永久保存区域大小。 在项目中大多情况下都需要在tomcat6.0的启动文件中catalina.sh 或catalina.bat 增加下面的一行:JAVA_OPTS=” -XX:PermSize=64M -XX:MaxPermSize=128m”
2. 如果tomcat部署了多个应用,并且这些应用都使用了相同的jar,可以将共同的jar移到tomcat的lib下,减少类的重复加载

第二种OutOfMemoryError: Java heap space 发生这种问题的原因是突然创建了太多的对象,虚拟机分配的堆内存空间已经用满了。
解决这类问题有三种思路:
1. 减少不必要地对象的创建,尽可能不要在循环中重复创建对象。
2.增加Java虚拟机中Xms(初始堆大小)和Xmx(最大堆大小)参数的大小。如:set JAVA_OPTS= -Xms256m -Xmx1024m
3. 使用完对象后,把对象设置成null

第三种OutOfMemoryError:unable to create new native thread 这种情况在Java线程个数很多的情况下容易发生

转自:http://blog.csdn.net/lzw190/article/details/10563757

JAVA之outofmemory相关推荐

  1. myeclipse下Tomcat java.lang.OutOfMemory Error: Java heap space

    http://blog.csdn.net/mjhwy/article/details/8490709 转载于:https://blog.51cto.com/534861/1216965

  2. [JVM-翻译]揭开java.lang.OutOfMemoryError面纱之一

    Java.lang.OutOfMemoryError是什么  Java.lang.OutOfMemory是java.lang.VirtualMachineError的一个子类,当Java虚拟机中断,或 ...

  3. JVM运行时结构、Java内存管理、JVM实例、HotSpot VM对象的创建、内存布局和访问定位

    1.JVM运行时结构 Java 运行时数据区域有程序计数器.Java虚拟机栈.本地方法栈.Java堆和方法区.其中前三个线程私有,随线程生而生,线程灭而灭:后面两个是线程间共享. 1.1 程序计数器 ...

  4. myEclipse开发内存溢出解决办法myEclipse调整jvm内存大小java.lang.OutOfMemoryError: PermGen space及其解决方法...

    摘要: tomcat部署多个项目后,启动tomcat正常,访问项目时却会出现该错误 在网上查了查又试了好几次,才解决,将解决方法记录下来,以方便以后查看或让遇到同样问题的朋友有个参考 PermGen ...

  5. Linux下jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案

    Linux下的jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案 问题 linux的jetty下发布程序后再启动jetty服 ...

  6. java虚拟机中xms_java JVM虚拟机选项: Xms Xmx PermSize MaxPermSize 区别

    java虽然是自动回收内存,但是应用程序,尤其服务器程序最好根据业务情况指明内存分配限制.否则可能导致应用程序宕掉. 举例说明含义: -Xms128m 表示JVM Heap(堆内存)最小尺寸128MB ...

  7. tomcat java垃圾回收_tomcat启动参数配置,内存和垃圾回收

    一般情况下: JAVA_OPTS='-Xms2048m -Xmx2048m -XX:MaxPermSize=512m -XX:+UseParallelGC -XX:ParallelGCThreads= ...

  8. 认识 java JVM虚拟机选项 Xms Xmx PermSize MaxPermSize 区别

    认识 java JVM虚拟机选项 Xms Xmx PermSize MaxPermSize 区别 2012-08-24 12:15 点击window---->preferences----> ...

  9. 20175202 《Java程序设计》第九周学习总结

    20175202 2018-2019-2 <Java程序设计>第九周学习总结 教材知识点总结 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系统,简称 ...

最新文章

  1. 读取javascript脚本的正则表达式
  2. JavaScript ECMAScript规范里对于分号semicolon用法最权威的定义
  3. python mysql in 参数_python mysql中in参数化说明
  4. 4号线地铁站点列表_【暖房】6号线酒店式白领公寓;房山地铁站品牌公寓;4号线分散式公寓;朝阳门附近整租房源...
  5. 淘宝前端框架kissyui
  6. 5G信道编码技术取得新突破,极化码同时满足ITU三大应用需求
  7. Python调用Dos命令
  8. 对话西蒙斯:解密金融模型和量化投资帝国
  9. WOW装备大全(07.11.30)
  10. excel自动排班表_Excel教程:3秒搞定排班表模板
  11. 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。(java)
  12. 古风系统仙侠文推荐_5本古典仙侠全本精品小说,文笔精湛,仙味十足,值得细品一二...
  13. HBuilderX连接苹果手机iPhone预览移动端页面
  14. Cypress系列(43)- visit() 命令详解
  15. Kubernetes 1.23:双栈IPv4/IPv6、CronJobs、Ephemeral卷
  16. 爱码物联SaaS|一物一码技术如何助力线下流量营销?
  17. 我的世界怎么看服务器信息,我的世界怎么查看服务器种子
  18. 【阿里聚安全技术公开课】业务安全及防护(数据风控)
  19. 扒一扒国内做得比较优秀的无人机倾斜摄影公司
  20. c语言课程设计报告书万年历,计算机c语言课程设计万年历报告书

热门文章

  1. 4.redis设计与实现--跳跃表
  2. the source attachment does not contain the source for the file xxx.class无法关联到某个类
  3. 环形数组求最大子数组之和
  4. 推荐两个Magento做的中文网站 GAP和佰草集
  5. ASP.NET路由系统实现原理:HttpHandler的动态映射
  6. 【Java从0到架构师】Spring - 生命周期、代理
  7. 【SpringMVC 笔记】控制器 Controller 与 RestFul 风格
  8. 【基础概念大总结】— 网络安全 Java 基础知识大汇总
  9. 化工企业数据分析报表系统项目之销售模块分析
  10. java正则表达式去除空格_去掉字符串前后所有空格的正则表达式