202110-21 一篇文章带你搞定JAVA内存泄漏 目录1、什么是内存泄漏2、内存泄漏的原因3、内存泄漏有哪些情况3.1代码中没有及时释放,导致内存无法回收。3.2资源未关闭造成的内存泄漏3.3全局缓存持有的对象不使用的时候没有及时移除,导致一直在内存中无法移除3.4静态集合类3.5堆外内存无法回收4、内存泄漏的解决办法5、内存问题排查第一步首先确认逻辑问题第二步:分析gc是否正常执行第三步确认下版本新增代码的改动,尽快从代码上找出问题。第四步:开启各种命令行和... 继续阅读 >
202107-01 Java基础之内存泄漏与溢出详解 目录一、浅析二、Java内存泄露三、Java内存溢出一、浅析内存泄露(memoryleak):是指程序在申请内存后,无法释放已申请的内存空间,多次内存泄露堆积后果很严重,内存迟早会被占光。内存泄漏最终会造成内存溢出。内存溢出(outofmemory):是指程序在申请内存时,没有足够的内存空间供其使用JVM中有一下几种内存空间:栈内存(Stack):每个线程私有的。堆内存(Heap):所有线程公用的。方法区(MethodArea)... 继续阅读 >
202105-23 Java基础详解之内存泄漏 一、什么是内存泄漏内存泄漏是指你向系统申请分配内存进行使用(new/malloc),然后系统在堆内存中给这个对象申请一块内存空间,但当我们使用完了却没有归系统(delete),导致这个不使用的对象一直占据内存单元,造成系统将不能再把它分配给需要的程序。一次内存泄漏的危害可以忽略不计,但是内存泄漏堆积则后果很严重,无论多少内存,迟早会被占完,造成内存泄漏。二、Java内存泄漏引起的原因1、静态集合类引起内存泄漏:像HashM... 继续阅读 >
202011-25 排查Java应用内存泄漏问题的步骤 什么是内存泄漏内存泄漏是指java应用的堆内存使用率持续升高,直至内存溢出。内存泄漏的的原因可能有多种分配给应用程序的内存本身过小。而应用的业务代码,确实需要生成大量的对象代码bug,某些需要被回收的对象,由于代码bug,却持续的被引用,导致java虚拟机无法回收这些对象。从而撑爆内存无论哪种内存泄露,我们的解决方法都是要定位到具体是什么对象,占用了大量内存,从而方便我们基于此进行代码分析,debug,找出代码... 继续阅读 >
202010-08 macOS上使用gperftools定位Java内存泄漏问题及解决方案 这几天在排查一个堆外内存泄漏的问题时看到很多人都提到了gperftools这个神器,想要尝试一下结果发现它对macOS的支持不太友好。而且大多数教程是针对C++的,里面的一通编译链接的操作看得我个Java仔眼花缭乱的。所以我在这里整理一份mac和Java版的使用教程,免得大家再来踩坑了。一、简介gperftools是google提供的一套分析工具,包括堆内存检测heap-profiler,内存泄漏分析工具heap-checker和CPU性能监测工具cpu-profiler。众所周... 继续阅读 >