![](https://img-blog.csdnimg.cn/20190505085915987.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JVM-从零开始
java虚拟机基础学习,参考书籍《深入理解Java虚拟机》-周志明
不懂的浪漫
这个作者很懒,什么都没留下…
展开
-
JVM 常见面试题汇总(Java8)
JVM 常见面试题汇总(Java8)文章目录JVM 常见面试题汇总(Java8)前言1.JVM 有哪些内存区域?(JVM 的内存布局是什么?)2.Java 的内存模型是什么?(JMM 是什么?)3.JVM 垃圾回收时如何确定垃圾?什么是 GC Roots?4.能够找到 Reference Chain 的对象,就一定会存活么?5.强引用、软引用、弱引用、虚引用是什么?6.你说你做过 JVM 参数调优和参数配置,请问如何查看 JVM 系统默认值7.你平时工作中用过的 JVM 常用基本配置参数有哪些?8.请你谈原创 2020-07-10 16:54:44 · 1977 阅读 · 1 评论 -
大厂面试必考-JVM 内存管理 Java8
大厂面试必考-JVM 内存管理文章目录大厂面试必考-JVM 内存管理前言1.为什么要进行内存区域划分?2.JVM 内存布局3.虚拟机栈4.程序计数器5.堆6.元空间7.其他面试题7.1 常量池去哪里了?7.2 堆、非堆、本地内存,有什么关系?8.总结8.1 JVM 如何进行内存区域的划分?8.2 JVM 如何高效进行内存管理?8.3 Java8 为什么增加了元空间,它又涉及什么问题?9.参考前言本章我们将讨论 JVM 的内存划分以及栈上的执行过程。这块内容在面试中主要涉及以下三个问题:JVM 如何原创 2020-07-07 15:50:15 · 396 阅读 · 0 评论 -
JVM-类加载器
文章目录1.类加载器定义2.类加载例子2.1自定义类加载器3.双亲委派模型4.参考书籍1.类加载器定义虚拟机设计团队把类加载阶段中“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。类加载器虽然只用于实现类的加载动作,但是在java程序中起到的作用远不限于类加载阶段。...原创 2019-06-30 19:53:20 · 109 阅读 · 0 评论 -
JVM-监控命令及工具
1.JDK命令行工具开发人员肯定知道java.exe和javac.exe今天介绍一些jvm性能监控常用命令1.1 jpsJVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程jps -l 输出主类的全名,如果执行程序是jar包,输出jar的路径-v 输出虚拟机进程启动时jvm参数-q只输出LVMID,省略主类名称-m输出虚拟...原创 2019-03-13 14:43:57 · 357 阅读 · 0 评论 -
JVM-垃圾收集器
Hotspot垃圾收集器组合图展示了7种作用于不同分代区域的收集器,存在连线表示可以组合使用。1.Serial/Serial Old1.1 Serial收集器这个收集器是一个单线程的收集器,但它的单线程的意思并不仅仅说明它只会使用一个CPU或者一个收集线程去完成垃圾收集的工作,而且在工作的同时,必须暂停掉其他所有线程,直到它收集结束。虚拟机在后台自动发起和自动完成,在用...原创 2019-01-10 10:04:43 · 464 阅读 · 0 评论 -
JVM-垃圾收集算法
1.标记-清除算法算法分为两个阶段“标记”和“清理”,首先标记出所有需要回收的对象,在标记完成后统一回收标记的对象。两个缺点:效率问题,标记和清除两个过程的效率都不高 空间问题,标记清除后会存在大量不连续的内存碎片,空间碎片会导致jvm在回收较大的对象时,无法找到足够的连续空间而不得不提前触发一次垃圾收集动作。2.复制算法将可用内存分为两块大小相等的区域,每次只使用其中...原创 2019-01-04 17:37:09 · 134 阅读 · 0 评论 -
JVM-内存回收原理分析
思考:哪些内存需要回收?一、如何判断对象已死垃圾收集器在对堆中的对象回收之前,第一件事情就是哪些对象还存活,哪些已经死去(即不可能被其它途径使用)。1.1 引用计数算法给对象添加一个引用计数器,每当有一个地方引用该对象,计数器+1,当引用失效时,计数器-1;任何时刻计数器为0时,表示对象不可能再被使用。Java虚拟机没有采用这一种来管理内存,主要原因是它很难解决对象之间相互...原创 2019-01-02 16:39:32 · 288 阅读 · 0 评论 -
JVM-对象创建、访问、内存布局
Java的对象创建 虚拟机遇到一条新的指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号,并且检查这个符号引用代表的类是已被加载,解析和初始化过,如果没有先执行相应的类加载过程。 在类加载检查通过后,为新生对象分配内存。对象所需内存的大小在类加载完成后便可以完全确定,为对象分配空间的任务等同于把一块确定大小的内存从java的堆中划分出来。1....原创 2018-12-28 11:20:26 · 948 阅读 · 0 评论 -
JVM-运行时数据区
运行时数据区域黄色:线程私有,生命周期与线程相同蓝色:线程共享内存区域 程序计数器 当前线程所执行的字节码的行号指示器(指令的地址)。 字节码解释器工作就是通过改变计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这个计数器来完成。 Java虚拟机的多线程是通过线程轮流切换并分配处理器...原创 2018-12-27 20:20:14 · 165 阅读 · 0 评论 -
JVM-内存分配与回收策略
内存分配与回收策略 Java技术体系中所提倡的自动内存管理解决了两个问题:给对象分配内存 回收分配给对象的内存 Heap堆 所有的对象实例以及数组都要在堆上分配,但是随着JIT编译器的发展与逃逸分析技术逐渐成熟,栈上分配、标量优化等等技术会导致一些微妙的变化,本文只讨论大多数情况。 对象优先分配Eden 大多数情况下,对象在新生代...原创 2018-12-25 18:15:47 · 178 阅读 · 0 评论