![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 93
seal_li
这个作者很懒,什么都没留下…
展开
-
【jvm】03-写了final就是常量池了么
【jvm】03-写了final就是常量池了么欢迎关注b站账号/公众号【六边形战士夏宁】,一个要把各项指标拉满的男人。该文章已在github目录收录。屏幕前的大帅比和大漂亮如果有帮助到你的话请顺手点个赞、加个收藏这对我真的很重要。别下次一定了,都不关注上哪下次一定。gitee目录知乎目录csdn目录视频讲解上一篇下一篇1.jre和jdk的关系2.运行时数据区域2.1.程序计数器它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成原创 2021-05-09 11:05:33 · 95 阅读 · 0 评论 -
【jvm】09-full gc分析思路
full gc分析思路一.友情链接目录可直接运行的完整代码视频讲解文字版屏幕前的大帅比和大漂亮如果有帮助到你的话请顺手点个赞、加个收藏这对我真的很重要。别下次一定了,都不关注上哪下次一定。二.命令界面2.1Jmap堆命令jmap -histo:live {pid} | head -13num:序号instances:实例数量bytes:占用空间大小class name:类名称,[C is a char[],[S is a short[],[I is a int[],[B is a原创 2020-11-23 08:02:16 · 193 阅读 · 0 评论 -
【jvm】08-垃圾回收器那么多傻傻分不清?
垃圾回收器那么多傻傻分不清?一.友情链接目录视频讲解文字版屏幕前的大帅比和大漂亮如果有帮助到你的话请顺手点个赞、加个收藏这对我真的很重要。别下次一定了,都不关注上哪下次一定。二.垃圾收集算法2.1标记-复制算法该算法将内存分为2块均等的,当该区域使用完毕后就一次性复制到另一块区域。在Hotspot中实现即为s0与s1,只不过做了优化吧伊甸园分了出去,目前年轻代的垃圾收集器都是用该算法。标记-复制算法极度浪费空间,在新生代有95%的对象都会被回收掉自然还好,但是在老年代就行不通了于是演变出了后原创 2020-11-23 08:00:51 · 87 阅读 · 0 评论 -
【jvm】07-偏向锁、轻量锁、重量锁到底是啥?
偏向锁、轻量锁、重量锁到底是啥?一.友情链接目录可直接运行的完整代码视频讲解文字版二.概述多任务处理在现代计算机操作系统中几乎已是一项必备的功能了。在许多场景下,让计算机同时 去做几件事情,不仅是因为计算机的运算能力强大了,还有一个很重要的原因是计算机的运算速度与 它的存储和通信子系统的速度差距太大,大量的时间都花费在磁盘I/O、网络通信或者数据库访问上。这个在 一行代码完成多线程有写过如何分配线程,原理基本一致。由于计算机 的存储设备与处理器的运算速度有着几个数量级的差距,所以现代计算机原创 2020-11-22 17:36:35 · 296 阅读 · 0 评论 -
【jvm】06-new一个对象到底占了多少内存?
new一个对象到底占了多少内存?一.友情链接目录可直接运行的完整代码视频讲解文字版二.对象的创建当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到 一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。1.空间分配指针碰撞假设Java堆中内存是绝对规整的,所有被使用过的内存都被放在一 边,空闲的内存被放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那 个指针向空闲原创 2020-11-22 12:48:08 · 763 阅读 · 0 评论 -
【jvm】05-为什么你写的代码有时候和预期不一致
为什么你写的代码有时候和预期不一致一.友情链接目录视频讲解文字版二.前端编译2.1javac编译器即一般所说的编译,从javac代码的总体结构来看,编译过程大致可以分为1个准备过程和3个处理过程,它们分为1)准备过程:初始化插入式注解处理器2)解析与填充符号表过程,构造抽象语法树3)插入式注解处理器的注解处理过程4)分析与字节码生成过程:语法检查->控制流分析->解析语法糖->字节码生成语法糖主要有以下几种:泛型、自动拆装箱遍历循环、条件编译类型擦除(编译前)p原创 2020-11-22 09:13:06 · 132 阅读 · 0 评论 -
【jvm】04-我偷偷改了你编译后的class文件
我偷偷改了你编译后的class文件1.友情链接目录可直接运行的完整代码视频讲解文字版2.准备工作准备一份代码public class TestEntity { private String name;}编译所得cafe babe 0000 0034 0012 0a00 0300 0f070010 0700 1101 0004 6e61 6d65 0100 124c6a61 7661 2f6c 616e 672f 5374 7269 6e673b01 0006 3c69原创 2020-11-12 00:31:13 · 132 阅读 · 0 评论 -
【jvm】02-手写自己的类加载器
当我自己写一个java.lang.String自己加载会发生什么友情链接目录可直接运行的完整代码视频讲解文字版如果有帮助到你的话请顺手点个赞、加个收藏这对我真的很重要简单手写自己的类加载器创建一个类继承ClassLoader,然后重写findClass、loadClass这两个方法findClass的方法private static byte[] loadByte(String name) throws Exception { name = name.replaceAll("\\原创 2020-09-05 18:14:57 · 232 阅读 · 0 评论 -
【jvm】01-双亲委派都会说,破坏双亲委派你会吗
jvm双亲委派及其破坏类的生命周期首先可以从图中明确类的生命周期1)遇到new、getstatic、putstatic或invokestatic这四条字节码指令时,如果类型没有进行过初始 化,则需要先触发其初始化阶段。能够生成这四条指令的典型Java代码场景有: ·使用new关键字实例化对象的时候。 ·读取或设置一个类型的静态字段(被final修饰、已在编译期把结果放入常量池的静态字段除外) 的时候。·调用一个类型的静态方法的时候。2)使用java.lang.reflect包的方法对类型进行反射调原创 2020-08-30 16:18:47 · 139 阅读 · 0 评论