网站地图 |  TAG标签 |  RSS订阅  【设为首页】  【加入收藏
网站首页   学校介绍   专业设置   师资力量   就业保障   青鸟学社   校园生活   学校新闻   招生简章   网上学堂   博客   开班计划
北大青鸟 北大青鸟咨询服务 北大青鸟报名北大青鸟就业保障 北大青鸟专题 北大青鸟高中生专题 北大青鸟中职生专题 北大青鸟大学生专题 北大青鸟待业者题 北大青鸟跳槽转行专题
当前位置: 首 页 > 网上学堂 > 程序开发 >

北大青鸟华腾教育 探究两大Java内存溢出类型

来源:未知 编辑:北大青鸟老师 日期:2013-12-11 15:51
你知道如何解决Java内存溢出问题吗,这里和大家分享一下,JVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。

  你知道如何解决Java内存溢出问题吗,这里和大家分享一下,JVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。

  Java内存溢出的详细解决方案

  一、Java内存溢出类型

  1、java.lang.OutOfMemoryError:PermGenspace

  JVM管理两种类型的Java内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果webapp用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成Java内存溢出,或者tomcat热部署时侯不会清理前面加载的环境,只会将context更改为新部署的,非堆存的内容就会越来越多。

  PermGenspace的全称是PermanentGenerationspace,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGenspace中,它和存放类实例(Instance)的Heap区域不同,GC(GarbageCollection)不会在主程序运行期对PermGenspace进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGenspace错误,这种错误常见在web服务器对JSP进行precompile的时候。如果你的WEBAPP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

  一个最佳的配置例子:(经过本人验证,自从用此配置之后,再未出现过tomcat死掉的情况)

  setJAVA_OPTS=-Xms800m

  -Xmx800m-XX:PermSize=128M

  -XX:MaxNewSize=256m

  -XX:MaxPermSize=256m

  2、java.lang.OutOfMemoryError:Javaheapspace

  再来看一下Java内存溢出的第二种情况,第一种情况是个补充,主要存在问题就是出现在这个情况中。其默认空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。如果内存剩余不到40%,JVM就会增大堆到Xmx设置的值,内存剩余超过70%,JVM就会减小堆到Xms设置的值。所以服务器的Xmx和Xms设置一般应该设置相同避免每次GC后都要调整虚拟机堆的大小。假设物理内存无限大,那么JVM内存的最大值跟操作系统有关,一般32位机是1.5g到3g之间,而64位的就不会有限制了。

  注意:如果Xms超过了Xmx值,或者堆最大值和非堆最大值的总和超过了物理内存或者操作系统的最大限制都会引起服务器启动不起来。

  垃圾回收GC的角色

  JVM调用GC的频度还是很高的,主要两种情况下进行垃圾回收:

  当应用程序线程空闲;另一个是java内存堆不足时,会不断调用GC,若连续回收都解决不了内存堆不足的问题时,就会报outofmemory错误。因为这个异常根据系统运行环境决定,所以无法预期它何时出现。根据GC的机制,程序的运行会引起系统运行环境的变化,增加GC的触发机会。

  为了避免这些问题,程序的设计和编写就应避免垃圾对象的内存占用和GC的开销。显示调用System.GC()只能建议JVM需要在内存中对垃圾对象进行回收,但不是必须马上回收,一个是并不能解决内存资源耗空的局面,另外也会增加GC的消耗。

温馨提示:如果您对北大青鸟的学费、专业设置、就业推荐有任何疑问,可以点击“在线报名”老师与您联系!

------分隔线----------------------------
  • 复制网址发给好友
  • 收藏本文
若您对这篇文章的内容有疑问或者评论,请在此留言给老师,老师会尽快答复你的。
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
最新留言/评论 浏览更多留言/评论>>
栏目导航
北大青鸟入学咨询服务
    点击咨询 毕业工作分配问题
    点击咨询 毕业学历证书问题
    点击咨询 学费书费杂费问题
    点击申请 免费试听机会
    点击报名 参加技术讲座
课程,学费,就业等资料索取(免费)
       姓 名:
     联系电话:
     qq:
     验证码:
    E-mail:
     
北大青鸟就业明星
    北大青鸟北京华腾校区就业学员 我的选择,我的路
      每个人心中都有梦
    想,尤其在年轻的时
    候。无论这个梦想多么
    的遥不可及,却都寄托
    北大青鸟北京华腾校区就业学员 刘友富,安徽人
      我只有高中学历,
    却能在北京奔驰汽车公
    司上班.感谢北大青鸟
    学校,感谢老师们,祝
北大青鸟免费技术讲座
    讲座日期: 本周六 点击抢座
    讲座时间: 下午1点30分
    讲座地点: 北大青鸟BENET网络工程师校区,第一教室
    主讲老师: 李庆儒老师 , 网络工程师培训金牌讲师
    讲座主题: 我的安全我做主
    讲座内容: 检测、防御、黑客信息,如何过滤不安全的网站,如何防御黑客的进攻。
    咨询电话: 010-82011433
    订座电话: 010-82011432
网友推荐内容