⽤进⾏⽇志分析
2. 下载下来如果打不开的话应该是jdk版本不对,⽐如我下载的MemoryAnalyzer-1.9.0.20190605-win32.win32.x86_64 版本,⽤的是1.8的jdk。我本地⼀开始是1.6,解压后打开\MemoryAnalyzer-1.9.0.20190605-
win32.win32.x86_64\,不报错也不显⽰。打开则提⽰不⽀持version吧。
另外⼀个版本的MemoryAnalyzer打开则提⽰报错,查看⽇志,需要jdk1.7的版本。怎么样网上购物
3. 设置jvm参数,内存溢出时⽣成dump⽂件:
-Xms4096m -Xmx4096m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -Xloggc:d:/gc.log -
XX:HeapDumpPath=d:/test.dump
4. 打开⽣成的dump⽂件,双击后,File ->Open Heap Dump, ⽂件名后⾯的选项选择All Files,选择
六朝古都之称的城市是test.dump.,堆栈报的异常信息是:Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
5. 按钮弹窗选择:Finish。
显⽰了⼀个report:
点击Detail,
可以看到DruidConnectionHolder对象⽐较多,有500个连接,点击500那个链接,JavaBasics->Open In Dominator Tree,
每个连接占了3M,120个差不多占了30M,
打开⼀个 DruidConnectionHolder 对象,可以发现⾥⾯有很多 T4CPreparedStatement ,
品种法
打开 T4CPreparedStatement,发现有 OracleSql ,打开OracleSql可以看到byte数组显⽰的sql语句,
逆战塔防查看别的 DruidConnectionHolder,sql 语句基本上都是⼀样,可以判断出有相同的业务再插⼊数据库,导致了⼤量的数据库连接⽆法释放,java堆内存总共⽐较⼩。
查看 Problem Suspect 2,发现有⼤量的 org.apache.ibatis.mapping.ResultMap,是数据库查询返回结果,跟前⾯判断的数据库连接
问题导致的内存溢出问题⼀致。
二年级数学下册期末试卷到此的话可以判断出,内存溢出的问题,⼀个应该是需要调⼤jvm内存,再⼀个需要限制数据库连接。
项⽬⾥⾯还有⼀个原因是调⽤接⼝的时候⽤了内存缓存,把参数放到内存缓存,通过队列再由异步线程⼀直处理,插⼊数据库。缓存的速度⼤于异步处理的速度。⽬前处理是把缓存去掉,限制数据库连接池为100。⽤数据库连接池配合线程池做异步插⼊。
再补充⼀点,可以通过查看类的⼤⼩进⾏排序,并搜索属于⾃⼰项⽬的类
哪个牌子美白效果好
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论