![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 92
Forward233
砥砺前行,不忘初心
展开
-
Java反射原理总结
反射是Java 中非常重要的特性,它允许正在运行的Java程序观测,甚至是修改程序的动态行为。例如:我们可以通过Class 对象枚举出该类所有方法,我们还可以通过Method.Accessible 绕过Java 语言的访问权限,在私有的方法所在类之外的地方调用该方法。在Java 开发环境(IDE)中当我们输入对象后输入点号时,编译器会根据点号前的数据动态的展示出对象中的属性和方法。在Web开发中,我们经常使用的各种通用框架为了保证框架的可扩展性,往往都使用Java反射功能,根据配置文件中的信息来动态的原创 2021-01-28 07:54:52 · 613 阅读 · 0 评论 -
HotSpot的垃圾回收的算法细节实现(GC Root、Safe Point)
GC Roots 枚举可作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)。在进行 GC Roots 枚举时必须在一个能确保一致性的快照中进行——在整个分析期间整个执行系统看起来就像被冻结在某个时间点上,不可以出现分析过程中对象引用关系还在不断变化的情况,该点不满足的话分析结果准确性就无法得到保证。即所有正在运行的程序必须停顿,不能出现正在枚举 GC Roots,而程序还在跑的情况。GC Roots 枚举为了确保一致性的快照就必然会导致Stop T原创 2021-01-22 15:32:08 · 177 阅读 · 0 评论 -
JVM Happens-Before 先行发生原则
JVM先行发生原则如果Java内存模型中所有的有序性都仅靠volatile和synchronized来完成, 那么有很多操作都将会变得非常啰嗦, 但是我们在编写Java并发代码的时候并没有察觉到这一点, 这是因为Java语言中有一个“先行发生”(Happens-Before) 的原则。 这个原则非常重要, 它是判断数据是否存在竞争, 线程是否安全的非常有用的手段。 依赖这个原则, 我们可以通过几条简单规则一揽子解决并发环境下两个操作之间是否可能存在冲突的所有问题, 而不需要陷入Java内存模型苦涩难懂的定原创 2020-12-27 12:44:28 · 241 阅读 · 0 评论 -
JVM synchronized锁升级
目录一,对象头1,Mark Word2,指向类的指针3,数组长度二,实例数据三,对齐填充字节Java对象保存在内存中时,由以下三部分组成:1,对象头2,实例数据3,对齐填充字节一,对象头java的对象头由以下三部分组成:1,Mark Word2,指向类的指针3,数组长度(只有数组对象才有)1,Mark WordMark Word记录了对象和锁有关的信息,当这个对象被synchronized关键字当成同步锁时,围绕这个锁的一系列操作都和Mark Word有关。Ma转载 2020-10-23 10:21:12 · 649 阅读 · 0 评论 -
JVM吞吐量垃圾收集器
Parallel Scavenge收集器也是一款新生代收集器, 它同样是基于标记-复制算法实现的收集器, 也是能够并行收集的多线程收集器……Parallel Scavenge的诸多特性从表面上看和ParNew非常相似, 那它有什么特别之处呢?Parallel Scavenge收集器的特点是它的关注点与其他收集器不同, CMS等收集器的关注点是尽可能地缩短垃圾收集时用户线程的停顿时间, 而P...原创 2020-04-22 07:30:11 · 747 阅读 · 0 评论 -
垃圾收集器GC中parallel scavenge收集器为什么不能CMS配合使用?
首先看一下收集器的分布:1.解答parallel scavenge收集器为什么不能CMS配合使用?首先讲一下Hotspot,HotSpot VM里多个GC有部分共享的代码。有一个分代式GC框架,Serial/Serial Old/ParNew/CMS都在这个框架内;在该框架内的young collector和old collector可以任意搭配使用,所谓的“mix-and-match”。...转载 2020-03-15 20:40:30 · 719 阅读 · 1 评论 -
JVM自定义类加载器及注意问题
JVM自定义类加载器及问题在看神书《深入理解Java虚拟机》时,看到类加载部分,对如何自定义一个类加载器来,加载自己想要的加载的类产生了兴趣,所以研究了一下。参考了一下网上的其他的文章 ,记录一下。首先为什么要自定义类加载器呢我们需要的类不一定存放在已经设置好的classpath下(由系统类加载器AppClassLoader加载的路径),对于自定义路径中的class类文件的加...原创 2019-12-05 13:45:09 · 709 阅读 · 0 评论