JVM 内存泄露 分析 (史上最全) |
您所在的位置:网站首页 › jvm图书 › JVM 内存泄露 分析 (史上最全) |
文章很长,建议收藏起来,慢慢读! 备注:持续更新中… 进大厂、升架构、拿高薪 必备 的 经典图书和资料: 高薪必备1 : 经典图书《Netty Zookeeper Redis 高并发实战》 奉上 NIO、Netty Reactor模式 高性能 底层知识高薪必备2 : 经典图书《SpringCloud、Nginx高并发核心编程》 奉上 微服务、分布式 高并发 底层知识高薪必备3 :来Java高并发研究社群,价值 1000元网盘资源大礼包,免费拿 【博客园总入口 】 推荐2:2021春招月薪过5万 面试题 总目录 搞定下面这些面试题,2021春招月薪过5万(猛!)阿里、京东、美团、头条… 随意挑、横着走!!!Java基础1: JVM面试题(史上最强、持续更新、吐血推荐)https://www.cnblogs.com/crazymakercircle/p/14365820.html2:Java基础面试题(史上最全、持续更新、吐血推荐)https://www.cnblogs.com/crazymakercircle/p/14366081.html3:死锁面试题(史上最强、持续更新)[https://www.cnblogs.com/crazymakercircle/p/14323919.html]4:设计模式面试题 (史上最全、持续更新、吐血推荐)https://www.cnblogs.com/crazymakercircle/p/14367101.html5:架构设计面试题 (史上最全、持续更新、吐血推荐)https://www.cnblogs.com/crazymakercircle/p/14367907.html还有 10 + 篇必刷、必刷 的面试题更多 …, 请参见【 疯狂创客圈 高并发 总目录 】 推荐3: 疯狂创客圈 springCloud 高并发系列 springCloud 高质量 博文 nacos 实战(史上最全) sentinel (史上最全+入门教程) springcloud + webflux 高并发实战 Webflux(史上最全) SpringCloud gateway (史上最全)还有 10 + 篇 必刷、必刷 的高质量 博文更多 …, 请参见【 疯狂创客圈 高并发 总目录 】 JVM性能优化面试题JVM内存区域常见问题 Java 中会存在内存泄漏吗,简述一下? Java 内存分配? Java 堆的结构是什么样子的? 什么是堆中的永久代(Perm Gen space)? 简述各个版本内存区域的变化? 说说各个区域的作用? JVM的执行子系统常见问题 Java 类加载过程? 描述一下 JVM 加载 Class 文件的原理机制?什么是类加载器? 类加载器有哪些? 类加载器双亲委派模型机制? 垃圾回收常见问题 什么是GC? 为什么要有 GC? 简述一下Java 垃圾回收机制? 如何判断一个对象是否存活? 垃圾回收的优点和原理,并考虑 2 种回收机制? 垃圾回收器的基本原理是什么? 垃圾回收器可以马上回收内存吗? 有什么办法主动通知虚拟机进行垃圾回收? 深拷贝和浅拷贝? System.gc() 和 Runtime.gc() 会做些什么? 如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存? 什么是分布式垃圾回收(DGC)? 它是如何工作的? 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么? 在 Java 中,对象什么时候可以被垃圾回收?简述Minor GC 和 Major GC?JVM 的永久代中会发生垃圾回收么?Java 中垃圾收集的方法有哪些? 性能优化常见问题 讲讲你理解的性能评价及测试指标? 常用的性能优化方式有哪些? 什么是GC调优? JVM调优工具Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里 JProfiler:商业软件,需要付费。功能强大。详细说明参考这里 VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。 JVisualVM初探 VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe),能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。 在JDK_HOME/bin(默认是C:\Program Files\Java\jdk1.6.0_13\bin)目录下面,有一个jvisualvm.exe文件,双击打开,从UI上来看,这个软件是基于NetBeans开发的了。 可以进行远程和本地监控。远程监控需要打开jmx,下面内容会提到。 其默认页面为: 左侧分为本地和远程。双击本地中VisualVM线程,可以看到如下监控内容: 具体的介绍参看: http://www.ibm.com/developerworks/cn/java/j-lo-visualvm/ VisualVM可以根据需要安装不同的插件,每个插件的关注点都不同,有的主要监控GC,有的主要监控内存,有的监控线程等。 1、从主菜单中选择“工具”>“插件”。2、在“可用插件”标签中,选中该插件的“安装”复选框。单击“安装”。3、逐步完成插件安装程序。 我这里以 Eclipse(pid 22296)为例,双击后直接展开,主界面展示了系统和jvm两大块内容,点击右下方jvm参数和系统属性可以参考详细的参数信息. 1、定义静态变量HashMap 2、分段循环创建对象,并加入HashMap 代码如下: import java.util.HashMap; import java.util.Map; public class CyclicDependencies { //声明缓存对象 private static final Map map = new HashMap(); public static void main(String args[]){ try { Thread.sleep(10000);//给打开visualvm时间 } catch (InterruptedException e) { e.printStackTrace(); } //循环添加对象到缓存 for(int i=0; i |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |