自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 读薄《深入理解 Java 虚拟机》虚拟机类加载机制

#虚拟机类加载机制类被加载的生命周期包括加载→验证→准备→解析→初始化→使用→卸载解析阶段在某些情况下可以在初始化阶段之后开始,这是为了支持 Java 语言的运行时绑定。虚拟机规范严格规定了有且只有 5 种情况必须立即对类进行初始化。遇到 new,getstatic,putstatic 或 invokestatic 这 4 条字节码指令时,如果类没有进行过初始化,则需要先出发初始化。...

2018-11-16 21:27:58 92

原创 读薄《深入理解 Java 虚拟机》 类文件结构

Class 文件是一组以 8 字节为基础单位的二进制流,各项数据以严格的顺序排列,中间没有任何分隔符,使得整个 class 文件中存储的内容几乎是程序运行的全部必要数据。Class 文件格式采用一种类似于 C 语言结构体的微结构来存储数据,这种伪结构中只有两种数据结构无符号数和表。无符号数:基本的数据类型,以 u1,u2,u4,u8 来表示 1 个字节,2 个字节,4个字节,8个字节的无符号...

2018-11-16 21:26:59 97

原创 读薄《深入理解 Java 虚拟机》 垃圾收集

程序计数器,虚拟机栈,本地方法栈在线程结束的时候就自动被回收了,所以不用考虑这几个区域的内存回收。内存回收的主要区域是 Java 堆和方法区。对象可回收的判断##引用计数法给对象添加一个计数器,当有一个引用指向它的时候,计数器加一。当引用失效的时候计数器减一。这个方法实现简单,效率高,例如 python 中也是用到了这个方法。然而主流 Java 虚拟机中并没有采用这种方法,因为它解决不...

2018-11-16 21:25:49 77

原创 读薄《深入理解 Java 虚拟机》 JVM 的内存分配策略

内存分配规则不是固定的,取决于当前使用的是哪一种垃圾收集器以及虚拟机配置。对象优先在 Eden 上分配大多数情况下,对象分配在 Eden 上,当内存不足的时候触发一次 Minor GC。大对象分配进老年代需要连续内存空间的对象,最典型的是很长的字符串已经数组,写程序的时候应该避免生命周期短的大对象。经常出现大对象内存不足以存放而提前出发 GC 的情况。虚拟机提供了一个参数 -XX:Pre...

2018-11-16 21:24:35 78

原创 读薄《深入理解 Java 虚拟机》 Java 内存区域

Java运行时数据区域白色为线程独占的,灰色为线程共享的。Java在运行的时候会把他所管理的内存划分为若干区域,经常有人把内存区域分为堆内存和栈内存,这种内存分发比较粗糙,下面我们来仔细介绍一下 Java 中的内存区域。程序计数器程序记录器是用于记录程序所运行到的位置的,程序工作的时候就是通过改变这个计数器的值来选择下一条需要执行的指令(类似计算机组成原理中的 PC 计数器)。如果线程...

2018-11-16 21:23:04 62

原创 自顶向下彻底理解 Java 中的 volatile 关键字

标题 neta 自《计算机网络自顶向下》思维导图volatile 在 Java 中被称为轻量级 synchronized。很多并发专家引导用户远离 volatile 变量,因为使用它们要比使用锁更加容易出错。但是如果理解了 volatile 能帮助你写出更好的程序。当读比写更多时会获得比锁好相当多的性能比锁更好的伸缩性比锁使用方便,只需要声明变量即可,代码量小内存语义volat...

2018-11-05 21:57:48 127

原创 自顶向下彻底理解 Java 中的 Synchronized

标题 neta 自《计算机网络自顶向下》思维导图volatile 在 Java 中被称为轻量级 synchronized。很多并发专家引导用户远离 volatile 变量,因为使用它们要比使用锁更加容易出错。但是如果理解了 volatile 能帮助你写出更好的程序。当读比写更多时会获得比锁好相当多的性能比锁更好的伸缩性比锁使用方便,只需要声明变量即可,代码量小内存语义volat...

2018-11-05 21:53:05 127

原创 【读薄Effective Java】创建和销毁对象

#1. 考虑用静态工厂方法代替构造器##1.1 静态工厂的优点静态工厂就是通过静态方法来代替构造器。相比构造函数,它有几个优势。构造器没有名称。而静态工厂能指定名称,当一个类有多组构造函数的时候,可以用名称来把他们区分开来。构造器每次调用都会新建一个对象,而静态工厂可以在每一次调用都返回同一个对象,在这样的前提下可以用==代替equals来提升性能可以返回任何类型的类,例如Collec...

2018-11-05 21:46:08 104

空空如也

空空如也

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

TA关注的人

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