31百科知识网

31百科知识网

Java 堆内存溢出梗概分析

今天给各位分享JAVA中的内存溢出和内存泄露是什么的知识,其中也会对jvm内存溢出原因和解决办法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录

  1. java常用的异常类有哪些
  2. JAVA中的内存溢出和内存泄露是什么
  3. jvm性能调优都做了什么
  4. java面试题有哪些

java常用的异常类有哪些

谢邀!

Error和Exception都继承自Throwable。

Error表示系统级的错误和程序不必处理的异常,例如内存溢出等,这些不可能指望程序能处理;

Exception表示需要捕捉或者需要程序进行处理的异常,是程序设计或编码上的问题。

非检查异常(unckeckedexception):Error和RuntimeException以及它们的子类。Java编译器在编译时不会发现这种异常,所以不要求程序处理这种异常,当然也可以使用try、catch和finally处理这种异常。当出现这种异常大部分都是代码编写的有问题,应该通过修改代码的方式去解决,而不是捕获处理,例如ClassCastException、NullPointerException等。

检查异常(checkedexception):除了Error和RuntimeException的其它异常。Java编译器在编译时会发现这种异常,所以强制要求对这种异常进行预处理,即使用try、catch和finally处理这种异常,或者用throws子句向上层抛出,否则编译不通过。当出现这种异常一般是由程序的运行环境导致的,例如SQLException、IOException等,需要提前对这种可能出现的异常进行处理。

JAVA中的内存溢出和内存泄露是什么

JAVA中的内存溢出和内存泄露分别是什么,有什么联系和区别,我谈谈自己的理解。

内存泄漏(memoryleak):申请了内存不释放,比如100m的内存,分配了10m的内存一直不回收,那么可以用的内存只有90m了,仿佛泄露掉了一部分;通俗一点讲的话就是【占着茅坑不拉shi】。

内存溢出(outofmemory):申请内存时,没有足够的内存可以使用;通俗一点儿讲,一个厕所就三个坑,有两个站着茅坑不走的,剩下最后一个表示压力很大,这时候一下子来了两个人,坑位(内存)就不够了。

内存泄漏和内存溢出的关系:内存泄露的增多,最终会导致内存溢出。

这是一个很有味道的例子......

如上图,对象X引用对象Y,X的生命周期为60,Y的生命周期为20,当Y生命周期结束的时候,X依然引用着B,这时候,垃圾回收期是不会回收对象Y的;如果对象X还引用着生命周期比较短的A、B、C...对象A又引用着对象a、b、c...

那么就可能造成大量无用的对象不能被回收,进而占据了内存资源,造成内存泄漏,直到内存溢出。

内存泄漏的分类

经常(不断)发生:发生内存泄露的代码会被多次执行,每次执行,泄露一块内存;

偶然发生:在某些特定情况下才会发生;

一次性:发生内存泄露的方法只会执行一次;

隐式泄露:一直占着内存不释放,直到执行结束;严格的说这个不算内存泄露,因为最终释放掉了,但是如果执行时间特别长,也可能会导致内存耗尽。

内存泄露产生的可能原因

循环过多或死循环,产生大量对象;

静态集合类引起内存泄漏,因为静态集合的生命周期和应用一致,所以静态集合引用的对象不能被释放;

单例模式,和静态集合导致内存泄露的原因类似;

事件监听(listeners)和回调(callbacks);

各种连接,比如数据库连接、Socket连接、IO等,必须显式释放(close);

内存中加载数据量过大;我之前项目有一次上线的时候,应用启动奇慢直到夯死,就是因为代码中会加载一个表中的数据到缓存(内存)中,测试环境只有几百条数据,但是生产环境有几百万的数据。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

jvm性能调优都做了什么

JVM性能调优有很多设置,这个参考JVM参数即可.主要调优的目的:控制GC的行为.GC是一个后台处理,但是它也是会消耗系统性能的,因此经常会根据系统运行的程序的特性来更改GC行为控制JVM堆栈大小.一般来说,JVM在内存分配上不需要你修改,(举例)但是当你的程序新生代对象在某个时间段产生的比较多的时候,就需要控制新生代的堆大小.同时,还要需要控制总的JVM大小避免内存溢出控制JVM线程的内存分配.如果是多线程程序,产生线程和线程运行所消耗的内存也是可以控制的,需要通过一定时间的观测后,配置最优结果

java面试题有哪些

肝了一个月的面试题终于来啦,大家开心不。

2020年最新Java面试题整理,全网最全一份,包含各个技术栈,Java基础,Java集合,多线程,Java异常,spring,springMVC,springboot,springcloud,netty,dubbo,activemq,Javaweb,jvm,kafka,MongoDB,mybatis,MySQL,Nginx,rabbitmq,Redis,Tomcat,zookeeper,设计模式,数据结构,算法,分布式,限流,降级,cap原理等等知识点

话不多说,直接上图

总共80多个PDF

【BAT必备】计算机网络面试题:

链接:https://pan.baidu.com/s/1hFggmtdL1ZmE4utBlo8S1g提取码:qfkh

【BAT必备】设计模式面试题

链接:https://pan.baidu.com/s/1eXJveIVvQe-m3MdvLcT-fQ提取码:j0kx

【BAT必备】数据结构算法面试题:

链接:https://pan.baidu.com/s/1daFN9jY03fXsqwc9LeKi2w提取码:5ab7

【BAT必备】多线程面试题:

链接:https://pan.baidu.com/s/1GdvsNESoHPBjWKN2h-iK7Q提取码:cqib

【BAT必备】并发编程锁面试题:

链接:https://pan.baidu.com/s/1hXPPtMY2dvz-g7QcSTc3PA提取码:zhmy

【BAT必备】tomcat面试题:

链接:https://pan.baidu.com/s/1qPZXx4lmLynmaF0XjRTzpQ提取码:5m16

【BAT必备】zookeeper面试题:

链接:https://pan.baidu.com/s/1EhOee9e1Qe-Q6RC8KlthxA提取码:p2am

【BAT必备】spring全家桶面试题:

链接:https://pan.baidu.com/s/1DXGO-N5P6QIGKLZ8LIVOuQ提取码:m9v7

【BAT必备】rocketMq面试题:

链接:https://pan.baidu.com/s/1TEF3yUR4OOaIpj-4ud_79A提取码:3g3d

【BAT必备】redis面试题:

链接:https://pan.baidu.com/s/1qlanxWBfwvKUObnHulCQiA提取码:rjo7

【BAT必备】rabbitMq面试题:

链接:https://pan.baidu.com/s/1ywLiq3IUJVyZosPLNrmyTA提取码:0td4

【BAT必备】netty面试题:

链接:https://pan.baidu.com/s/1Pbv4aelqOt1dUPA2SwEB_Q提取码:2w1e

【BAT必备】Nginx面试题:

链接:https://pan.baidu.com/s/1r8YNyOz0N6MJ9F0045lEZw提取码:49tl

【BAT必备】MySQL面试题:

链接:https://pan.baidu.com/s/1GeX6Fs4nNi6fTUHKxJ2SZw提取码:8pow

【BAT必备】mybatis面试题:

链接:https://pan.baidu.com/s/1xOYiaiQ2JpPt2jb6GdWjaA提取码:aqd3

【BAT必备】MongoDB面试题:

链接:https://pan.baidu.com/s/1QTVx1TF8tDn6LUJr7wdfOQ提取码:j1qt

【BAT必备】Linux面试题:

链接:https://pan.baidu.com/s/1veZ3dBJmz1PduCE5tl-e1A提取码:txpf

【BAT必备】kafka面试题:

链接:https://pan.baidu.com/s/1SWhiBCswleYGsDupSGzE6g提取码:o1gv

【BAT必备】jvm面试题:

链接:https://pan.baidu.com/s/1xi-QLq_I75kha439EGqELw提取码:kxde

【BAT必备】javaweb面试题:

链接:https://pan.baidu.com/s/1r3Bupn9qhJbw5ebR_6h94A提取码:qba4

【BAT必备】Java基础面试题:

链接:https://pan.baidu.com/s/1J40nYKIoV_VMCumoRpIyhQ提取码:5xo7

【BAT必备】dubbo面试题:

链接:https://pan.baidu.com/s/10flnh7Tb0Oxd3yZPQOnjsA提取码:5gc9

【BAT必备】activeMQ面试题:

链接:https://pan.baidu.com/s/1igNB64dpMCjCQkRzvqCXpQ提取码:006a

【BAT必备】分布式相关面试题大全面试题:

链接:https://pan.baidu.com/s/1ZcpJDh07B2NPAL4_4VC6jQ提取码:w4mw

【BAT必备】java面试题大全:

链接:https://pan.baidu.com/s/11jw0Ua4CZiI8-S6EadM_iQ提取码:epmp

【BAT必备】Java面试汇总

链接:https://pan.baidu.com/s/1vG9_cNoiYBW5TY32S4wGnQ提取码:k087

【BAT必备】2020年多家公司整理的350道Java面试题手册

链接:https://pan.baidu.com/s/1FEGQVTgiyKG0kCasYn-n2g提取码:f7y1

【BAT必备】Java全部核心知识点整理

链接:https://pan.baidu.com/s/1StG-ib70TDAE1Hb4NVLQRQ提取码:5rp1

整理这些非常辛苦,大家点个赞在走吧

JAVA中的内存溢出和内存泄露是什么和jvm内存溢出原因和解决办法的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

内存泄漏和内存溢出的区别,产生原因和解决方案 技术

标签:# 内存# 是什么# 溢出# 泄露# JAVA