自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 jvm内存模型与GC知识(深入理解java虚拟机读书笔记-3)

jvm内存模型与GC内存模型jvm的内存模型分为方法区、堆、虚拟机栈、本地方法栈、程序计数器与直接内存。下面列表介绍内存区域名称内存区域内容描述方法区(元空间)元空间并不在虚拟机中,而是使用本地内存。存储类的信息,方法数据,方法代码等方法区(运行时常量池)jvm规范没有对这部分内存做规定,一般是静态常量池(Class文件)中的编译期生成的各种字面量与符号引用。运行时常量池具有动态性,运行期间也可以将新的常量放在池中。堆唯一目的是存放对象实例,几乎所有的对象实

2020-05-20 21:22:00 463

原创 线程安全与锁优化

线程安全与锁优化线程安全定义:当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,就称这个对象是线程安全的。java中各种共享数据分为五类:**不可变:**被final修饰,很多对象也是final的,比如:Integer、String等,但AtomicInteger内部的value不是final的。**绝对线程安全:**java中没有这种对象,需要严格符合上述定

2020-06-28 22:35:45 128

原创 java内存模型与线程

java内存模型与线程java内存模型java的工作内存方式与CPU、缓存、内存间的关系很类似,如下:java线程<—>工作内存<—>|Save |java线程<—>工作内存<—>|和load |<—>主内存java线程<—>工作内存<—>|操作 |所有变量都在主内存中,工作内存中存储要使用的变量在主内存中的副本,线程对变量所有操作都在工作内存中,无法直接访问主内存。内存交互操作包含l

2020-06-28 22:35:00 130

原创 后端编译与优化

后端编译与优化即时编译器hotspot有一个解释器与C1(客户端编译器)、C2(服务端编译器)两个即时编译器,采用分层工作方式:0:纯解释执行1:使用C1编译,进行简单可靠的优化,不开性能监控。2:同上,但开启方法、回边次数统计等有限性能监控。3:同上,但开启全功能性能监控。4:使用C2编译,更多优化,更激进优化。开启分层后,热点代码可被多次编译热点代码触发条件:被多次调用的方法、多次执行的循环体。但两种情况编译目标都是整个方法体。这里多次的判定条件是:1.采样法,经常查看栈顶

2020-06-28 22:34:06 363

原创 前端编译与优化

前端编译与优化编译器分类分为:前端编译器:javac之类,将java代码编译成字节码即时编译器:Hotspot的C1、C2等,运行期间把字节码编译成本地代码提前编译器:直接把java代码编译成字节码。java语法糖所谓语法糖就是对程序员来说的简化写法,但底层字节码没有支持的指令,编译器会将其解码。泛型java是类型擦除式泛型,List<String>尖括号中的类型会在编译中擦除,下列泛型用法都不合法:package com.sdt;/** * @auth

2020-06-28 22:33:31 206 1

原创 类加载及执行子系统案例与实战

类加载及执行子系统案例、实战Tomcat正统的类加载器结构一个完整的web服务器应具备:(1)部署在同一服务器上的不同web程序使用的java类库可实现隔离(2)与(1)相反,不同web程序使用的java类库可实现共享,如很多使用spring组织的应用在同一服务器上。(3)保证服务器自身安全不受web程序影响。(4)hotswap,热替换综上,部署web程序需要很多classpath。在/common目录,类库可被tomcat与所有web程序使用。在/server目录,对Tomca

2020-06-28 22:33:02 117

原创 虚拟机类加载机制 从加载到双亲委派及其破坏

虚拟机的类加载机制类加载的时机下图是整个java类的生命周期:这些阶段会按部就班的开始,解析阶段某些情况下可在初始化阶段之后再开始。jvm规定有且只有六种情况必须初始化,(1)使用new关键字实例化对象、读取或设置一个类的静态字段(final修饰除外)、调用一个类的静态方法时。(2)对类进行反射调用时(3)父类没有初始化就先初始化父类。(4)先初始化main方法所在的类(5)参考书264页(6)jdk8之后,一个接口定义了被default关键字修饰的默认方法,接口实现类初始化之前

2020-05-30 16:17:40 189

原创 jvm-class结构

Java Class文件结构类文件结构java语言“一次编写,到处运行”的基础就是平台无关的字节码,jvm将.java文件编译成字节码组成的.class文件,在运行过程中,jvm对.class文件进行动态连接。一些java语言本身无法支持的语言特性并不代表字节码也无法表达出来。许多不同的语言都是基于jvm的,如:Kotlin、JPython、Scala等。现在jvm的已经具备了语言无关性,这个优势有可能在日后赶超它的平台无关性优势。.class文件是一组以8个字节为基础单位的二进制流,各

2020-05-25 21:08:10 142

原创 markdown文件中的本地图片转base64编码

markdown文件中的本地图片转base64编码本地markdown文件上传到csdn博客中本地图片不能上传,于是想到将图片转换成base64格式,嵌入到文章中,然而发现并没有什么卵用,csdn的文件上传长度有限制,导致太长的文件不能完全显示出来。记录一下本次成果。这里直接在idea中新建了一个maven项目,使用javaSE内容足够,代码摘自我本人的个人博客项目Abner的个人博客后台代码如下package com.abner.pojo;import java.io.*;import

2020-05-16 17:55:39 1145

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除