JVM
oayoat
一枚渴望成长的程序员
展开
-
[知识大纲]-JVM
1.JVM内存模型详解线程共享区堆空间生命周期分代机制常用JVM参数方法区(元空间)线程私有区程序计数器线程栈栈帧局部变量表详解操作数栈动态链接解析方法出口(方法返回地址)本地方法栈直接内存2.JVM内存管理垃圾收集机制详解垃圾收集器G1收集器Serial收集器ParNew收集器ParallelScavenge收集器Ser...原创 2019-05-04 00:01:20 · 253 阅读 · 0 评论 -
[JVM]-可作为GC Roots的对象
摘自《深入理解Java虚拟机》可达性分析算法:这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连(用图论的话来说,就是从GC Roots 到这个对象不可达)时,则证明此对象时不可用的,会被判定为可回收对象。可作为GC Roots的对象包括下面几种:(1)虚拟机栈(...原创 2019-05-23 19:20:22 · 1000 阅读 · 0 评论 -
[JVM]-类加载的时机
加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定(也称为动态绑定或晚期绑定)。虚拟机规范中没有进行强制约束,但对于初始化过程,严格规定了有且只有5种情况必须立即对类进行“初始化”(而加载、验证、准备自然而然要在此之前开始)遇到new、getstatic、putstatic或invoke...原创 2019-05-05 22:06:10 · 124 阅读 · 0 评论 -
[JVM]-常见面试题
下面是按jvm虚拟机知识点分章节总结的一些jvm学习与面试相关的一些东西。一般作为Java程序员在面试的时候一般会问的大多就是Java内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM内存管理这些问题了。这些内容参考周的《深入理解Java虚拟机》中第二章和第三章就足够了对应下面的常见面试题摘自gethub:JavaGuide虚拟机之Java内存区域介绍下Java内存区域(运行时数据区...转载 2019-05-05 21:36:24 · 193 阅读 · 0 评论 -
[JVM]-垃圾收集算法
3 垃圾收集算法3.1 标记-清除算法算法分为“标记”和“清除”阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。它是最基础的收集算法,效率也很高,但是会带来两个明显的问题:效率问题空间问题(标记清除后会产生大量不连续的碎片)3.2 复制算法为了解决效率问题,“复制”收集算法出现了。它可以将内存分为大小相同的两块,每次使用其中的一块。当这一块的内存使用完...原创 2019-05-05 20:27:55 · 140 阅读 · 0 评论 -
[JVM]-内存分配与回收策略
本节常见面试题问题答案在文中都有提到如何判断对象是否死亡(两种方法)。简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。如何判断一个常量是废弃常量如何判断一个类是无用的类垃圾收集有哪些算法,各自的特点?HotSpot 为什么要分为新生代和老年代?常见的垃圾回收器有那些?介绍一下 CMS,G1 收集器。Minor Gc 和 F...原创 2019-05-05 20:26:56 · 290 阅读 · 0 评论 -
[JVM]-对象已经死亡?
2 对象已经死亡?堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断那些对象已经死亡(即不能再被任何途径使用的对象)。2.1 引用计数法给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加 1;当引用失效,计数器就减 1;任何时候计数器为 0 的对象就是不可能再被使用的。这个方法实现简单,效率高,但是目前主流的虚拟机中并没有选择这个算法来管理内存,其最主要的原因是它很难...原创 2019-05-05 20:25:26 · 181 阅读 · 0 评论 -
[JVM]-垃圾收集器
JVM 垃圾回收写在前面本节常见面试题本文导火索1 揭开 JVM 内存分配与回收的神秘面纱1.1 对象优先在 eden 区分配1.2 大对象直接进入老年代1.3 长期存活的对象将进入老年代1.4 动态对象年龄判定2 对象已经死亡?2.1 引用计数法2.2 可达性分析算法2.3 再谈引用2.4 不可达的对象并非“非死不可”2.5 如何判断一个常量是废...原创 2019-05-05 19:30:24 · 324 阅读 · 0 评论 -
[JVM]-内存区域与内存溢出异常
1.运行时数据区域Java虚拟机在执行Java程序时的过程中会把它所管理的内存划分为若干个不同的数据区,每个数据区有各自的用途、创建和销毁的时间。1.1程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完。另外...原创 2019-05-04 21:47:40 · 249 阅读 · 0 评论 -
Java性能调优
性能的参考指标执行时间CPU时间内存分配磁盘吞吐量网络吞吐量响应时间最有可能成为系统瓶颈的计算资源磁盘IO网络操作CPU异常数据库锁竞争内存加速比定义加速比定义:加速比=优化前系统耗时/优化后系统耗时性能调优的层次设计调优代码调优JVM调优数据库调优操作系统调优基本调优策略和手段优化的一般步骤...原创 2019-08-02 20:03:19 · 153 阅读 · 0 评论