jvm
文章平均质量分 76
机智的爆爆哥
只要你足够的优秀 这个世界没有理由不对你和颜悦色(^O^)
展开
-
自定义类加载器实现热部署
自定义类加载器实现热部署原创 2023-01-06 12:06:10 · 294 阅读 · 0 评论 -
一文搞懂Java对象内存布局
对象头里有什么?原创 2022-06-29 22:17:33 · 298 阅读 · 0 评论 -
JVM方法区之执行引擎
概述我们都知道java源代码经过javac指令会编译成字节码文件,但是字节码文件并不能运行在操作系统上,而要将字节码翻译成机器语言,以供程序运行,执行引擎就起到了这样的一个翻译官的角色。机器码 指令 汇编暂时补一些以前的知识,更便于理解之后的内容。机器码:由010101这样的二进制数字组成的编码方式,可读性太差,不好记忆,但是它的执行是最快的,由cpu直接...原创 2021-10-31 11:47:10 · 195 阅读 · 0 评论 -
1. JVM入门介绍
1. 学JVM的目的是什么?大家学要带着目的去学 而不是说 他让我学我就学那么 他为什么让你去学呢?好了不卖关子了学习JVM 可以让我们清晰在Java的程序执行流程 对方法 属性 类有着更清晰的理解 并且对学习并发也很有好处 如果说实战的话 那肯定就是JVM参数调优了这时候 你将不会在是初学者 渐渐向着大佬迈进当你老了,回顾一生,就会发觉:什么时候出国...原创 2021-11-27 16:09:24 · 190 阅读 · 0 评论 -
JVM垃圾回收概述
带着问题学习更有益于集中我们的注意力,我带着问题来展开这一篇章。1. 什么是垃圾?简单的问题,但往往很多人都答不上来,这就是思维上的一种误区,好了不多bb了。简单来讲,当一个对象没有被任何引用指向,那它就成为了垃圾,如果一个人不被任何人所需要,那他就是垃圾了(例子不好,狗头保命)。当这样的垃圾多了,而没有被及时的清理,就很容易造成内存溢出了。2. 为什么需...原创 2021-11-22 21:43:12 · 174 阅读 · 0 评论 -
JVM字符串相关(下)
面试题先来两道面试题,对于理解后面的内容很有帮助。面试题一String str = new String("ab");请问创建了几个对象?我们可以从字节码的角度上来讲,如图所示可以看到,使用new创建了一个String对象,常量池创建了"ab"字符串对象,ldc指令将其从常量池中取出放入操作数栈中,之后执行字符串赋值,结果返回给str变量。所以一共创...原创 2021-11-02 18:21:43 · 154 阅读 · 0 评论 -
JVM之对象实例化与内存分配
既然之前已经讲了运行时数据区的概念,那么现在来梳理下对象的实例化过程与内存分配是很合适的。创建对象的方式有哪些?这里就大致说一下,不具体举例了。使用new关键字创建对象通过class,构造类反射创建使用clone方法使用反序列化使用unsafe类第三方类库创建对象的步骤这个是重点内容,我们详细来讲一下1.首先,我们要判断当前类是否经过加载,...原创 2021-11-05 12:34:48 · 360 阅读 · 0 评论 -
JVM之垃圾回收器上篇
1.垃圾回收器分类按工作模式分类,垃圾回收器可以分为:并发式垃圾回收独占式垃圾回收并发式指的是多个线程交替执行垃圾回收,使得程序的暂停时间减少了。独占式指的是一旦执行垃圾回收,停止其他用户线程,也就是说一旦执行了垃圾回收,用户程序就不能工作了。按线程数分类,垃圾回收器可以分为:串行垃圾回收器并行垃圾回收器并发垃圾回收器串行GC只适合于单核...原创 2021-11-26 22:21:13 · 176 阅读 · 0 评论 -
JVM运行时数据区概述
图解运行时数据区是jvm中非常重要的一部分 这里看一下图 中间部分就是我们要讲的内容了 我们会分五个部分进行讲解这篇文章呢 就大致提一下 对这些区域有个整体的印象即可线程共享可以看到 红色的部分有方法区和堆 这两个区域都是线程共享的 而其他区域都是 线程私有的 这么设置当然有好处了打个比方 如果程序计数器是线程共享的 就会导致运算结果 10+20+30 ...原创 2021-10-26 11:37:04 · 145 阅读 · 0 评论 -
JVM运行时数据区之方法区
堆空间怎么没讲方法区?之前学堆的时候 一直疑惑 怎么没讲方法区 方法区不是在堆中的吗现在疑惑解开了 逻辑上来说 方法区是属于堆空间的 但是实现上可以看成是独立于堆空间存在的 之前设置的新老年代比例 也没有包含方法区还有一点概念 jdk7是永久代 jdk8以后统一被称之为元空间了他们都是方法区的具体实现这么来讲吧 方法区相当于接口 永久代和元空间都是接口实现...原创 2021-11-09 22:11:58 · 192 阅读 · 0 评论 -
JVM字符串相关(上)
字符串相关的操作对我们平时的开发是很重要的,这次就从底层出发讲讲字符串相关内容。String基本特性创建字符串的方式大致分为两种,一种是直接加双引号,一种是使用new关键字,代码如下String s1="hello bb";String s2="hi baobao";类相关请看如下代码public final class String imp...原创 2021-11-02 14:03:44 · 186 阅读 · 0 评论 -
JVM类加载子系统
1. 类加载器与类加载的过程我们先来看张图,字节码文件经过类加载系统的过程,首先我们要明确,类加载器的作用是什么?主要是起了一个传输的作用,相当于快递员,后面的过程可以看成是流水线,会对相应的文件进行验证,判断是否合法。类的加载过程加载这里的加载只是整个加载的一个最初流程,这点需要注意,加载主要分为三步。1.通过类的全限定类名获取对应类的二进制字节流...原创 2021-12-01 22:33:54 · 182 阅读 · 0 评论 -
JVM之垃圾回收器下篇
本文的重点是来详细介绍下上篇文章中提到的其中垃圾回收器1. Serial GC为单核与串行而生之前也说过,这是一款最古老的垃圾回收器,因为那时候都是单核的CPU,一个线程只能跑用户线程或者是垃圾回收线程,而不能同时进行,过程如下图所示。所以这款GC采用的是独占的方式,对于新生代统一称为SerialGC,使用的是复制算法,这样可以提高回收效率,老年代称为Ser...原创 2021-11-26 22:23:39 · 162 阅读 · 0 评论 -
JVM运行时数据区之程序计数器
1. 介绍程序计数器又叫PC寄存器,全称为 Program Counter Register,直译过来的,可以看做是真实物理寄存器的一种抽象模拟。它主要的作用是存储下一条指令的地址,可以看到下图,从5的位置得到对应的操作指令,放入PC寄存器中存取,之后执行引擎会读取,将操作指令翻译成机器指令,执行一系列的加减乘除之类的操作。回顾一下,就如下图所示。2....原创 2021-12-05 16:54:58 · 229 阅读 · 0 评论 -
JVM垃圾回收算法
标记与清除哪些对象是垃圾?我们并不清楚,所以需要一个标记阶段,标记某个对象是垃圾,才能进行回收,相当于炒菜前必须要先去买菜。怎样清除垃圾?这是后一个阶段,炒菜需要做的事情,所以会有一个清除阶段。常用算法标记阶段:引用计数算法这不是重点内容,但还是需要了解一下。概念:每个对象保存整型的引用计数器属性,记录被引用的情况,一个对象被引用一次,计数器+1,引用失效,计数器-1。优点:实现简单,便于辨识哪些对象是垃圾。判断效率高,回收无延迟。缺点:单独字段需要存储计时器,增加空间开销。原创 2021-11-06 23:20:24 · 173 阅读 · 0 评论 -
Mac 安装VisualVM出现的坑 you are running visualvm using java runtime environment
在苹果网下载就好了 放链接http://www.pc6.com/mac/1040439.html安装了你会发现启动不了 提示你需要jdk环境莫慌 只需要改下文件即可终端进入/Applications/VisualVM.app/Contents/Resources/visualvm/etc里面有个文件visualvm.conf打开72行的注释 填你的jdk路径即可如图跳转命令 72 加上 G 就可以到指定行了:wq 保存退出就生效啦...原创 2021-07-09 22:22:34 · 976 阅读 · 1 评论