
JVM
文章平均质量分 60
Rick1993
这个作者很懒,什么都没留下…
展开
-
内存溢出常见原因及解决方法
引起内存溢出的原因有很多种,常见的有以下几种:1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据。解决方法:检查对数据库查询中,是否有一次获得全部数据的查询;对于数据库查询尽量采用分页的方式查询。2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收。解决方法:检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。3.代码中存在死循环或循环产生过多重复的对象实体。解决方法:检查代码中是否有死循环原创 2022-04-18 15:38:06 · 8808 阅读 · 0 评论 -
一个内存泄漏问题的排查
监控的MEM一直居高不下:使用jstat命令查看gc的情况,发现YGC已经停止,一直在FGC,怀疑内存已经泄漏,堆内存中有大量无法回收的对象。然后查看gc日志,发现年轻代和老年代使用率达到99%,且Full GC后内存没有被回收。确定肯定是有对象无法被回收。把堆的dump文件下载下来,用eclipse的mat插件分析error.hprof文件:发现有个对象占用内存特别大:...原创 2019-11-25 00:36:10 · 584 阅读 · 0 评论 -
jstack命令定位死锁
同样的,写一个死锁代码片段,发布到虚拟机,访问引起死锁的接口。排查步骤:使用top或者jps定位到项目进程pid;[root@localhost webapps]# jps6944 springboot.jar7124 Jps获取进程pid后直接使用命令:jstack -l 6944,打印线程dump,然后全文搜索deadlockFound one Java-level d...原创 2019-11-24 23:56:31 · 500 阅读 · 0 评论 -
jstack命令排查线上问题
以一个例子来演示服务器CPU占用率过高的问题:代码:@RestController@RequestMapping(path = "/index")public class IndexController { @RequestMapping(value = "/param") public String param(){ int i = 0; wh...原创 2019-11-24 23:20:50 · 373 阅读 · 0 评论 -
类加载机制
参考博客:类加载机制原创 2019-11-17 23:10:42 · 125 阅读 · 0 评论 -
JVM问题排查
我的虚拟机运行命令和参数java -Xms256m -Xmx512m -verbose:gc -Xloggc:/usr/local/tomcat/apache-tomcat-9.0.27/logs/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintHeapAtGC -XX:HeapDumpPath=/usr/local/tomcat/apache...原创 2019-10-27 17:30:35 · 243 阅读 · 0 评论 -
JVM垃圾收集器
先看两个图:Java垃圾收集器的类型:垃圾收集器工作的区域:常见垃圾回收器不同的垃圾回收器,适用于不同的场景。常用的垃圾回收器:串行(Serial)回收器是单线程的一个回收器,简单、易实现、效率高。并行(ParNew)回收器是Serial的多线程版,可以充分的利用CPU资源,减少回收的时间。吞吐量优先(Parallel Scavenge)回收器,侧重于吞吐量的控制。并发标...原创 2019-10-24 00:30:53 · 418 阅读 · 0 评论 -
java虚拟机垃圾回收
本博客内容来源于《深入理解java虚拟机》Minor GC和Full GC有什么不一样?新生代GC(Minor GC): 指发生在新生代的垃圾回收动作,因为java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快。老年代GC(Major GC/Full GC):指发生在老年代的GC,出现了Major GC,经常会伴随至少一次Minor GC(但非绝对的,在P...原创 2019-02-21 21:22:03 · 286 阅读 · 0 评论 -
java方法中的传参机制以及利用反射交换两个参数
问:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的...原创 2018-12-15 14:09:07 · 341 阅读 · 0 评论 -
JVM内存模型
jvm运行时数据区:原创 2018-12-17 11:38:48 · 328 阅读 · 0 评论 -
Java 的垃圾回收
参考博客:阿里技术什么是垃圾回收?垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。Java 语言出来之前,大家都在拼命的写 C 或者 C++ 的程序,而此时存在一个很大的矛盾,C++ 等语言创建对象要不断的去开辟空间,不用的时候又需要不断的去释放控件...原创 2019-10-02 17:39:40 · 356 阅读 · 0 评论