• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

标签:jvm

jvm

深入理解Java虚拟机(第三版)笔记(一) Java内存区域与内存溢出异常

深入理解Java虚拟机(第三版)笔记(一) Java内存区域与内存溢出异常
第一章 Java内存区域与内存溢出异常 1.1 运行时数据区域 线程共享数据区 线程私有数据区 方法区、堆 虚拟机栈、本地方法栈、程序计数器 1.1.1 程序计数器 通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖程序计数器完成。 如果线程执行的是Ja……继续阅读 »

jvm

深入学习 G1回收器和JVM:混合回收(6)

深入学习 G1回收器和JVM:混合回收(6)
混合回收可以总结为两个阶段: 并发标记: 目的是识别老生代分区中的活跃对象,并计算分区中的垃圾对象占空间的多少,用于垃圾回收过程中判断是否回收分区。 垃圾回收: 和新生代回收步骤一致,重用了新生代回收的代码,最大的不同就是回收的时候不仅仅回收新生代分区,同时回收并发标记中识别的垃圾多的老生代分区。 并发标记算法详解 并发标记……继续阅读 »

jvm

【Java基础】在IDEA如何使用JProfiler分析内存

【Java基础】在IDEA如何使用JProfiler分析内存
JProfiler是一款内存分析工具,可以实时监控当前JVM内存中存活的对象,也可以监控线程,CPU,锁等的情况。 IDEA中如何使用JProfiler? 首先下载JProfiler客户端,只安装客户端插件是不行的点击这里进入下载页面 IDEA安装JProfiler插件 重启IDEA插件并修改Jprofiler执行文件路径 1)安装完了JProfiler……继续阅读 »

jvm

面试官问我G1回收器怎么知道你是什么时候的垃圾?

面试官问我G1回收器怎么知道你是什么时候的垃圾?
这是why技术的第36篇原创文章 上面的图片是我上周末在家拍的。以后的文章里面我的第一张配图都用自己随手拍下的照片吧。分享生活,分享技术,哈哈。 阳台上的花开了,成都的春天快来了,疫情也应该快要过去了吧。 最近在看《霍乱时期的爱情》,不知道为什么和《大话西游》联系了起来,所以你可以看到玻璃上的倒影,是我在看《大话西游》。 谁都曾经有过大闹天宫的梦想,爱上层……继续阅读 »

jvm

【深入理解 Java 虚拟机】ExtClassLoader & AppClassLoader 创建的源码分析

【深入理解 Java 虚拟机】ExtClassLoader & AppClassLoader 创建的源码分析
拓展类加载器是Launcher 类的一个内部类,为了学习应用类加载器和拓展类加载器的实现细节,我们需要对Launcher 类的源码进行学习。 由于 Launcher 的代码属于 Oracle 闭源的代码部分,这一块代码的分析属于 IDEA 反编译出来的,所以部分变量的命名为var1, var2 这种奇怪的形式 1、获取系统类加载器 想要获取系统类加载器……继续阅读 »

jvm

深入学习 G1回收器和JVM:新生代回收(5)

深入学习 G1回收器和JVM:新生代回收(5)
新生代回收(YOUNG GC,YGC) 在内存分配的时候,剩余空间不能满足要分配的对象时,就会优先触发YGC。 G1每次回收的内存和分区个数可能并不相同,但是每一次YGC都收集所有的新生代分区,所以每次YGC之后都会调整新生代分区的数目。 YGC算法概述 YGC的执行顺序 进行收集之前需要STW 选择要收集的CSet,对于YGC来说,整个新生代……继续阅读 »

jvm

volatile关键字的作用

volatile关键字的作用
volatile关键字的作用 1.线程可见 ​ 如果多个线程都使用了同一个变量,那么其中一个线程改变了该变量,其他线程都会读取到该变量的最新值。 2.防止指令重排序 线程可见测试案例: volatile关键字可以线程读取变量的值时保证该值一定是最新值。 java环境: D:\WS-TEST>java -version java version "1.……继续阅读 »

jvm

【深入理解Java虚拟机】类的初始化过程

【深入理解Java虚拟机】类的初始化过程
类的初始化过程 加载 将 Class 文件以二进制的形式加载到内存中 验证 校验 Class 文件是否安全,是否被正确的修改等 准备 为类变量申请内存,设置默认值,(初始化变量的默认值,比如int初始化为0,reference初始化为null) 但是达到类的初始化之前都没有初始化为真正的值。 解析 将符号引用转换为直接引用 初始化 搜集并执行s……继续阅读 »

jvm

【深入理解Java虚拟机 】类加载器的命名空间以及类的卸载

【深入理解Java虚拟机 】类加载器的命名空间以及类的卸载
类加载器的命名空间 每个类加载器又有一个命名空间,由其以及其父加载器组成 类加载器的命名空间的作用和影响 每个类加载器又有一个命名空间,由其以及其父加载器组成 在每个类加载器自己的命名空间中不能出现相同类名的类 (此处值得是类的全名,包含包名) 在不同的类命名空间中,可能会出现多个相同的类名的类 如下面的代码示例中, 首先定义一个类加载器 MyCl……继续阅读 »

jvm

Hotspot jvm运行时数据区

Hotspot jvm运行时数据区
1.Hotspot jvm内存结构图 2.运行时数据区     类加载子系统加载class文件之后,将类信息保存于运行时数据区的方法区,方法区在java8之后被称为元数据空间。运行时数据区按是否被线程共享分为线程私有区和线程共享区,方法区和堆是线程共享的,java虚拟机栈、pc寄存器和本地方法栈是线程私有的,也就是说……继续阅读 »