内存溢出内存溢出和内存泄漏的区别

内存溢出  时间:2020-12-25  阅读:()

内存溢出什么意思?怎么解决呢

就是内存不够,

存溢出虽然很棘手,但也有相应的解决办法,可以按照从易到难,一步步的解决。

  第一步,就是修改JVM启动参数,直接增加内存。这一点看上去似乎很简单,但很容易被忽略。JVM默认可以使用的内存为64M,Tomcat默认可以使用的内存为128MB,对于稍复杂一点的系统就会不够用。在某项目中,就因为启动参数使用的默认值,经常报“OutOfMemory”错误。因此,-Xms,-Xmx参数一定不要忘记加。

  第二步,检查错误日志,查看“OutOfMemory”错误前是否有其它异常或错误。在一个项目中,使用两个数据库连接,其中专用于发送短信的数据库连接使用DBCP连接池管理,用户为不将短信发出,有意将数据库连接用户名改错,使得日志中有许多数据库连接异常的日志,一段时间后,就出现“OutOfMemory”错误。经分析,这是由于DBCP连接池BUG引起的,数据库连接不上后,没有将连接释放,最终使得DBCP报“OutOfMemory”错误。经过修改正确数据库连接参数后,就没有再出现内存溢出的错误。

  查看日志对于分析内存溢出是非常重要的,通过仔细查看日志,分析内存溢出前做过哪些操作,可以大致定位有问题的模块。

  第三步,安排有经验的编程人员对代码进行走查和分析,找出可能发生内存溢出的位置。重点排查以下几点:

  ? 检查代码中是否有死循环或递归调用。

  ? 检查是否有大循环重复产生新对象实体。

  ? 检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。

  ? 检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。

  第四步,使用内存查看工具动态查看内存使用情况。某个项目上线后,每次系统启动两天后,就会出现内存溢出的错误。这种情况一般是代码中出现了缓慢的内存泄漏,用上面三个步骤解决不了,这就需要使用内存查看工具了。

  内存查看工具有许多,比较有名的有:Optimizeit Profiler、JProbeProfiler、JinSight和Java1.5的Jconsole等。它们的基本工作原理大同小异,都是监测Java程序运行时所有对象的申请、释放等动作,将内存管理的所有信息进行统计、分析、可视化。开发人员可以根据这些信息判断程序是否有内存泄漏问题。一般来说,一个正常的系统在其启动完成后其内存的占用量是基本稳定的,而不应该是无限制的增长的。持续地观察系统运行时使用的内存的大小,可以看到在内存使用监控窗口中是基本规则的锯齿形的图线,如果内存的大小持续地增长,则说明系统存在内存泄漏问题。通过间隔一段时间取一次内存快照,然后对内存快照中对象的使用与引用等信息进行比对与分析,可以找出是哪个类的对象在泄漏。

  通过以上四个步骤的分析与处理,基本能处理内存溢出的问题。当然,在这些过程中也需要相当的经验与敏感度,需要在实际的开发与调试过程中不断积累。

内存溢出和内存泄露的区别

内存溢出,指你实际使用的内存大小(范围)超出了你申请的大小(范围),从而造成内存污染或者非法使用了内核空间的内存 内存泄露,指你申请的内存没有在使用完毕后释放,导致该段内存变成野内存,谁也使用不了。

内存溢出和内存泄漏的区别

内存泄漏一般是指内存分配了,但是没有释放。这样会导致内存越用越多,最后没有内存分配,导致系统崩溃。 内存溢出是指给代码分配了一块内存区域,但是没有按照这个指定区域使用,而是超过了分配的空间,经常会有恶意代码通过内存溢出的方式放置恶意代码,并执行这些恶意代码,从而侵入系统或者执行恶意代码。

hostkvm:美国VPS,三网强制CU-VIP线路,$5/月,1G内存/1核/15gSSD/500g流量

hostkvm在2021年3月新上线洛杉矶新VPS业务,强制三网接入中国联通优化线路,是当前中美之间性价比最高、最火热的线路之一,性价比高、速度非常好,接近联通AS9929和电信AS4809的效果,带宽充裕,晚高峰也不爆炸。 官方网站:https://hostkvm.com 全场优惠码:2021(全场通用八折,终身码,长期) 美国 US-Plan0【三网联通优化线路】 内存:1G CPU:...

HyperVMart:加拿大vps,2核/3G/25G NVMe/G口不限流量/季付$10.97,免费Windows系统

hypervmart怎么样?hypervmart是一家成立了很多年的英国主机商家,上一次分享他家还是在2年前,商家销售虚拟主机、独立服务器和VPS,VPS采用Hyper-V虚拟架构,这一点从他家的域名上也可以看出来。目前商家针对VPS有一个75折的优惠,而且VPS显示的地区为加拿大,但是商家提供的测速地址为荷兰和英国,他家的优势就是给到G口不限流量,硬盘为NVMe固态硬盘,这个配置用来跑跑数据非常...

RAKsmart 年中活动 独立服务器限时$30秒杀 VPS主机低至$1.99

RAKsmart 虽然是美国主机商,但是商家的主要客户群还是在我们国内,于是我们可以看到每次的国内节日促销活动期间商家也会发布促销。包括这次年中大促活动,RAKsmart商家也有发布为期两个月的年终活动,其中有商家擅长的独立服务器和便宜VPS主机。服务器包括站群服务器、特价服务器、高达10G带宽不限制流量的美国服务器。商家优惠活动,可以看到对应商品的优惠,同时也可以使用 优惠码 RAKBL9 同时...

内存溢出为你推荐
免费虚拟主机哪个网站可以申请免费虚拟主机空间?买虚拟主机虚拟主机购买要注意哪些???网站域名注册怎么做网站?怎么注册域名?租服务器开个小型公司,租个服务器需要多少钱?海外域名求国外域名商列表虚拟空间哪个好虚拟空间哪个好jsp虚拟空间java虚拟主机空间怎么选择,国内jsp虚拟主机比较稳定java项目做好后需要推荐一下吧香港虚拟主机推荐一下香港的虚拟主机公司!100m虚拟主机一般100-200M虚拟主机一天最多支持多少人访问啊?云南虚拟主机云南虚拟主机,公司网站用本地客户,云南数据港怎么样?
godaddy域名解析 新加坡主机 arvixe 59.99美元 云主机51web 云全民 元旦促销 圣诞促销 idc资讯 老左来了 可外链相册 cdn加速是什么 网站在线扫描 如何建立邮箱 联通网站 路由跟踪 我的世界服务器ip 电信网络测速器 重庆服务器 hosting24 更多