05 2020 档案

摘要:g1收集器是一个面向服务端的垃圾收集器,适用于多核处理器,大内存容量的服务器系统;满足短时间gc停顿的同时达到一个较高的吞吐量;JDK7以上版本适用。 G1算法将堆分为若干个区域region,它任然属于分代收集器,不过,这些区域的一部分包含新生代,新生代的垃圾收集依然采用暂停所有应用线程的方式,将存 阅读全文
posted @ 2020-05-28 12:51 慢跑 阅读(878) 评论(0) 推荐(0) 编辑
摘要:JDK动态代理 在说mybatis之前,先来了解一下jdk动态代理 /** * 代理类需要实现一个接口java.lang.reflect.InvocationHandler */ public class DynamicProxy implements InvocationHandler { pri 阅读全文
posted @ 2020-05-27 16:27 慢跑 阅读(150) 评论(0) 推荐(0) 编辑
摘要:垃圾判断算法 引用计数 给对象创建实例时会在堆中为实例分配内存空间并给对象引用设置为1,当有其他引用指向它时+1,当释放时-1,直到引用计数减小到0,该对象的内存就会被释放。 缺点:循环引用无法释放,比如:A引用B,B引用A,但是没有其它引用指向A和B,那么A,B不能使用,应该回收。 根搜索 我们可 阅读全文
posted @ 2020-05-21 14:56 慢跑 阅读(292) 评论(0) 推荐(0) 编辑
摘要:JVM运行时数据区域 1.线程私有程序计数器 2. 本地方法栈 3. Java虚拟机栈 Java虚拟机栈描述的Java方法的执行模型: 每个方法执行的时候都会创建一个栈帧用于存放局部变量表,操作栈,动态链接,方法出口等信息。一个方法的执行过程,就是这个方法对于栈帧的入栈出栈过程。 属于线程隔离的 线 阅读全文
posted @ 2020-05-21 10:23 慢跑 阅读(166) 评论(0) 推荐(0) 编辑
摘要:AsmTools AsmTools是openJdk中的一个项目,可以用来辅助我们修改字节码信息 官方文档: https://wiki.openjdk.java.net/display/CodeTools/How+to+build+AsmTools 测试类 package com.jvm.byteCo 阅读全文
posted @ 2020-05-14 17:52 慢跑 阅读(2525) 评论(0) 推荐(0) 编辑
摘要:魔数 字节码开头的4个字符(U4)表述魔数,魔数为固定值ca fe ba be 大小版本 Jdk版本如1.8.x,x就表示jdk的小版本,小版本是紧跟着魔数后的两个字节U2,大版本是紧跟在小版本后的两个字节U2,如1.8 16进制的34转化为10进制为52,对应java大版本为1.8 常量池 紧跟在 阅读全文
posted @ 2020-05-11 20:44 慢跑 阅读(351) 评论(0) 推荐(0) 编辑
摘要:类加载器基本职责就是根据类的二进制名(binary name)读取java编译器编译好的字节码文件(.class文件),并且转化生成一个java.lang.Class类的一个实例。这样的每个实例用来表示一个Java类,jvm就是用这些实例来生成java对象的。比如new一个String对象;反射生成 阅读全文
posted @ 2020-05-11 20:29 慢跑 阅读(221) 评论(0) 推荐(0) 编辑
摘要:类的生命周期 类的加载、连接、初始化 在Java代码中,类型的加载、连接与初始化过程都是在程序运行期间完成的,提供了更大的灵活性,增加了更多的可能性。 加载:查找并加载类的二进制数据 连接: 验证:确保加载的类的正确性 准备:为类的静态变量分配内存,并将其初始化为默认值 解析:将Java中的符号应用 阅读全文
posted @ 2020-05-06 16:08 慢跑 阅读(240) 评论(0) 推荐(0) 编辑