Java对象头

Hotspot虚拟机的对象头主要包括两部分数据:Mark Word(标记字段)、Klass Pointer(类型指针)。其中Klass Point是是对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例,Mark Word用于存储对象自身的运行时数据,它是实现轻量级锁和偏向锁...

2018-08-16 23:11:52

阅读数:27

评论数:0

Monitor

什么是Monitor?我们可以把它理解为一个同步工具,也可以描述为一种同步机制,它通常被描述为一个对象。 与一切皆对象一样,所有的Java对象是天生的Monitor,每一个Java对象都有成为Monitor的潜质,因为在Java的设计中 ,每一个Java对象自打娘胎里出来就带了一把看不见的锁,它叫...

2018-08-16 23:11:29

阅读数:68

评论数:0

Java内存模型之重排序

在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重排序,但是不能随意重排序,不是你想怎么排序就怎么排序,它需要满足以下两个条件: 在单线程环境下不能改变程序运行的结果; 存在数据依赖关系的不允许重排序 其实这两点可以归结于一点:无法通过happens-before原则推导出来的,JM...

2018-08-16 23:11:14

阅读数:16

评论数:0

JVM的内存区域划分(jdk7和jdk8)

  目录 前言 1、什么是JVM 2、JRE/JDK/JVM是什么关系 3、JVM执行程序的过程 4、 JVM的生命周期 5、JVM垃圾回收 一.运行时数据区的组成 1.程序计数器 2.Java栈(虚拟机栈) 1)、局部变量表 2)、操作数栈 3)、指向运行时常量池的引用...

2018-08-08 11:58:29

阅读数:312

评论数:0

读懂Java字节码

目录 一、简单demo分析 字节码文件信息 常量池 方法表集合 二、分析try-catch-finally的demo 计算机只认识0和1。这意味着任何语言编写的程序最终都需要经过编译器编译成机器码才能被计算机执行。所以,我们所编写的程序在不同的平台上运行前都要经过重新编译才能被执行。 ...

2018-08-07 23:58:18

阅读数:36

评论数:0

jvm性能分析命令

jps列出本机所有的jvm实例 jinfo pid 列出运行中的Java程序的运行环境参数 jstack pid 打印Java线程的堆栈,跟踪那些线程被阻塞或正等待 jmap 18544 物理内存使用情况 jmap -histo 18544 打印每个class的实例数目,内存占用,类全名信息 ja...

2018-07-30 19:55:41

阅读数:25

评论数:0

thread dump分析

一、thread dump信息获取 1、发送信号 * In Unix, use "kill -3 <pid>" where pid is the Process ID of the JVM.(kill 信号列表) * ...

2018-07-30 19:55:05

阅读数:74

评论数:0

类初始化流程

一、类的初始化顺序(静态变量、静态初始化块:决于它们在类中出现的先后顺序)>(变量、初始化块:决于它们在类中出现的先后顺序)>构造器 原理: 1、加载类信息。在实例化对象之前,类的装载器会找到需要加载的类class文件,进行类的加载(有父类的会先加载父类...

2018-07-27 13:15:18

阅读数:11

评论数:0

jvm---类加载

类加载     类的初始化顺序:         原理     有父类的加载顺序     不进行类信息的初始化         通过类引用静态常量         类引用静态变量的情况         通过数组定义来引用类,不会触发此类的初始化     类加载器双亲委派模型(ClassLoader...

2018-07-26 21:05:03

阅读数:10

评论数:0

优秀文章列表

1、jvm jvm系列 https://segmentfault.com/a/1190000004606059     2、java并发 https://www.jianshu.com/p/81e6f64c0fec https://juejin.im/entry/5a0bef4a6f...

2018-07-24 09:23:30

阅读数:17

评论数:0

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