内存溢出和内存泄漏的不同:内存泄漏是因为使用不当丢掉了一部分内存导致这部分内存不可用。
创新互联公司是一家集网站建设,四平企业网站建设,四平品牌网站建设,网站定制,四平网站建设报价,网络营销,网络优化,
四平网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
当在堆中创建了对象但是后来没有使用这个对象,有没有把整个对象的相关引用设为null。此时垃圾收集器会认为这个对象是需要的就不会清理这部分内存而导致这部分内存不可用。所以会导致内存泄漏进而可用的内存减少进而会导致内存溢出。
内存泄露问题排查方法。
用visualVM工具分析堆快照 如果发生内存泄漏:
1、找出泄漏的对象
2、找到泄漏对象的GC Root
3、根据泄漏对象和GC Root找到导致内存泄漏的代码
4、想法设法解除泄漏对象与GCRoot的连接
如果不存在泄漏:看下是否能增大jvm堆的容量、优化程序、减小对象的生命周期。
前期准备:当发生堆溢出的时候可以让程序在崩溃时产生一份堆内存快照
产生堆内存快照的方法:给jvm加上参数XX:+HeapDumpOnOutofMemoryError这样就会在程序崩溃的时候产生一份堆内存快照
分析堆内存快照我建议用jdk自带的可视化监视工具visualVM位置在jdk安装目录下的bin,如果是在Linux环境的话可以把快照传到window因为分析工具会占用很大的内存不建议在服务端进行分析。
以上就是小编对于虚拟机调优问题的简单分析。
当前文章:虚拟机调优简单分析
转载来源:
http://cdweb.net/article/cjjjcj.html