Java内存溢出

Java内存溢出

堆溢出

大量对象占据了堆空间,而且这些对象是强引用,导致无法回收

直接内存溢出

Java的NIO支持直接内存使用,从堆外获得内存空间,由于直接内存没有被Java虚拟机完全托管,若使用不当,容易触发直接内存溢出。

多线程导致内存溢出

线程的栈空间也是在堆外分配的,和直接内存相似,线程过多,会导致内存溢出。

永久区溢出

永久区是存放元数据的区域。如果定义了太多类型,那么永久区有可能溢出。

GC效率低下引起内存溢出

内存回收时,如果GC效率低下,那么系统的性能会收到严重的影响。如果系统堆空间太小,那么GC所占的时间就会较多,并且回收所释放的内存就会较少,
根据GC所占用的系统时间,以及释放的内存大小,虚拟机会评估GC的效率,一旦认为GC的效率过低,就会抛出内存溢出异常。

关于String的内存溢出

java.lang.String主要由3部分组成:代表字符数组的Value、偏移量offset和长度count.
例如:
字符串value数组包含100个字节,而count长度只有1个字节,那么这个String实际只有1个字节,却占据100个字节,那剩余99个就属于泄露的部分。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,374评论 11 349
  • 虽然jvm可以通过GC自动回收无用的内存,但是代码不好的话仍然存在内存溢出(OOM)风险。 一、为什么要了解内存泄...
    lucode阅读 299评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,778评论 18 399
  • 周末作业是帮助古巴人民把互联网”夹带“进古巴,需要在美国把互联网访问后按 网址url=>内容方式 保存到文...
    陈容喜阅读 151评论 0 3
  • 文 ‖ 线偶Scar 小七说,要有最遥远的梦想和最朴素的生活,即使明日天寒地冻,路遥马亡。那些所有踏破凌霄的梦想,...
    线偶Scar阅读 10,884评论 0 10