
JVM
深入讲解Java中JVM底层原理
小七mod
脚踏实地,仰望星空
展开
-
【Spring】手写模拟spring IoC容器
自定义异常 /*** 自定义异常*/public class SpringException extends RuntimeException { public SpringException(String msg) { super(msg); } } 自定义注解 // 要设置注解的生命周期是运行...原创 2020-04-09 14:43:39 · 477 阅读 · 1 评论 -
【并发基础】CAS(Compare And Swap)操作的底层原理以及应用详解
目录一、锁机制存在的问题二、什么是CAS三、CAS的应用3.1 非阻塞算法 (nonblocking algorithms)四、CAS底层原理4.1 处理器自动保证基本内存操作的原子性4.2 通过总线锁定来保证原子性4.3 通过缓存锁定来保证原子性4.4 总结五、CAS存在的问题5.1 循环时间太长5.2 只能保证一个共享变量原子操作5.3 A...原创 2020-02-21 09:28:38 · 6709 阅读 · 0 评论 -
【JVM笔记】Java的<init>方法与<clinit>方法
<clinit>:在jvm第一次加载class文件时调用,包括静态变量初始化语句和静态块的执行<init>:在实例创建出来的时候调用,包括调用new操作符;调用Class或java.lang.reflect.Constructor对象的newInstance()方法;调用任何现有对象的clone()方法;通过java.io.ObjectInputStream类的g...转载 2020-02-16 10:47:06 · 651 阅读 · 0 评论 -
【编译器优化技术】逃逸分析
目录逃逸分析同步省略标量替换栈上分配逃逸分析并不成熟在Java的编译体系中,一个Java的源代码文件变成计算机可执行的机器指令的过程中,需要经过两段编译,第一段是把.java文件转换成.class文件。第二段编译是把.class转换成机器指令的过程。第一段编译就是javac命令。在第二编译阶段,JVM 通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释...原创 2020-02-14 17:44:16 · 308 阅读 · 0 评论 -
【编译器优化技术】方法内联
目录一、概念二、方法内联的原理三、方法内联的条件四、内联的隐藏条件五、结论方法内联,说它是编译器最重要的优化手段,甚至都可以不加 上“之一”。内联被业内戏称为优化之母,因为除了消除方法调用的成本之外,它更重要的意义是为其他优化手段建立良好的基础一、概念方法内联就是把调用方函数代码"复制"到调用方函数中,减少因函数调用开销的技术函数调用过程:1、首先会有个执行...转载 2020-02-14 17:38:57 · 1026 阅读 · 0 评论 -
【JVM笔记】Java的编译原理
我们可以通过javac命令将Java程序的源代码编译成Java字节码,即我们常说的class文件。这是我们通常意义上理解的编译。但是,字节码并不是机器语言,要想让机器能够执行,还需要把字节码翻译成机器指令。这个过程是Java虚拟机做的,这个过程也叫编译。是更深层次的编译。在编译原理中,把源代码翻译成机器指令,一般要经过以下几个重要步骤:转存失败重新上传取消...原创 2020-02-14 17:33:35 · 433 阅读 · 0 评论 -
【JVM笔记】GC算法和GC收集器详解
目录一、Serial收集器二、ParNew收集器三、Parallel Scavenge收集器四、Serial Old收集器五、Parallel Old收集器六、CMS收集器为什么除了Serial收集器外只有ParNew能与CMS收集器配合?七、G1收集器分区和卡片的关系G1收集器的特点G1收集器的执行步骤:八、怎么选择垃圾收集器?有...原创 2020-02-04 00:07:43 · 584 阅读 · 0 评论 -
【JVM笔记】GC算法详解
目录:一、如何判断对象(在堆中的实例)可以被回收 1.1引用计数法 1.2可达性分析算法二、如何判断一个常量是废弃常量三、如何判断一个类是无用的类四、垃圾回收算法(GC,Garbage Collection) 4.1标记-清除算法(Mark-Sweep) 4.2复制算法(Copy) 4.3标...原创 2020-02-03 20:50:49 · 317 阅读 · 0 评论 -
【JVM笔记】如何打破双亲委派机制?
以下主要为重写loadClass()和使用线程上下文类加载器这两种打破双亲委派模型方法的总结,并结合具体实例进行分析。参考:破坏双亲委派模型 什么地方违反了双亲委派模型 以JDBC为例谈双亲委派模型的破坏...原创 2020-01-31 23:32:35 · 9778 阅读 · 1 评论 -
【JVM笔记】类的生命周期各阶段的解释
类的生命周期分为加载,连接(验证,准备,解析),初始化,使用,卸载这几个阶段。下面为每个阶段的详细解释。原创 2020-01-30 16:13:32 · 231 阅读 · 0 评论 -
【JVM笔记】运行时数据区(内存结构)
以下为JDK1.8版本虚拟机运行时数据区的相关总结(OneNote截图)。文章目录结构:线程共享区域 1 方法区 1.1运行时常量池(Runtime Constant Pool) 1.2 元空间实现方法区 2.堆(Heap) 2.1 新生代(Young Generation) ...原创 2020-01-29 15:23:40 · 347 阅读 · 0 评论 -
【JVM笔记】永久代(PermGen)和元空间(Metaspace)的区别
以下为永久代和元空间的一些区别,还有各自的一些特点的知识点汇总(OneNote截图)原创 2020-01-29 01:01:08 · 309 阅读 · 0 评论 -
【JVM笔记】class文件常量池(JVM 常量池)、运行时常量池、字符串常量池的总结
以下为对class文件常量池,运行时常量池,字符串常量池的一些知识点的汇总原创 2020-01-19 16:58:25 · 677 阅读 · 0 评论 -
【JVM笔记】记录一道面试题:String s = new String("xyz");创建了几个String Object?
以下为@RednaxelaFX在论坛中针对这个问题做出的相应讨论的记录,感觉很有收获,所以就加上自己的理解,将整理笔记(OneNote截图)分享出来,作为以后复习的资料。原帖地址https://hllvm-group.iteye.com/group/topic/21761对于字符串在常量池中的存储机制的详解,可以参考字符串常量池中的不可变字符串(Immutable String)和限...原创 2020-01-18 16:27:03 · 336 阅读 · 0 评论 -
【JVM笔记】类加载机制详解(全盘负责委托机制和双亲委派机制 )
以下为我在学习JVM时网上查阅的关于类加载机制的知识点的汇总笔记(OneNote截图)。原创 2020-01-15 23:02:51 · 1590 阅读 · 8 评论 -
【JVM笔记】字符串常量池中的不可变字符串(Immutable String)和限定字符串(Interned String)
以下为我在学习JVM时网上查阅的关于字符串常量池的知识点的汇总总结笔记(One Note截图)。原创 2020-01-15 18:35:32 · 384 阅读 · 0 评论