![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
程序猿渣渣帅
技术、生活、观点、个人成长。 主要关注互联网电商广告业务、数据分析方法论、大数据分析平台建设;java web、分布式、大数据处理以及可视化等相关技术。
展开
-
优秀文章列表
1、jvmjvm系列https://segmentfault.com/a/1190000004606059 2、java并发https://www.jianshu.com/p/81e6f64c0fechttps://juejin.im/entry/5a0bef4a6fb9a045263b2005https://juejin.im/post/5ae6dc04f265...原创 2018-07-24 09:23:30 · 152 阅读 · 0 评论 -
Java对象头
Hotspot虚拟机的对象头主要包括两部分数据:Mark Word(标记字段)、Klass Pointer(类型指针)。其中Klass Point是是对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例,Mark Word用于存储对象自身的运行时数据,它是实现轻量级锁和偏向锁的关键。Mark Word用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄...原创 2018-08-16 23:11:52 · 548 阅读 · 0 评论 -
Java内存模型之重排序
在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重排序,但是不能随意重排序,不是你想怎么排序就怎么排序,它需要满足以下两个条件:在单线程环境下不能改变程序运行的结果; 存在数据依赖关系的不允许重排序其实这两点可以归结于一点:无法通过happens-before原则推导出来的,JMM允许任意的排序。1、as-if-serial语义as-if-serial语义的意思是,所有的操...原创 2018-08-16 23:11:14 · 131 阅读 · 0 评论 -
Monitor
什么是Monitor?我们可以把它理解为一个同步工具,也可以描述为一种同步机制,它通常被描述为一个对象。 与一切皆对象一样,所有的Java对象是天生的Monitor,每一个Java对象都有成为Monitor的潜质,因为在Java的设计中 ,每一个Java对象自打娘胎里出来就带了一把看不见的锁,它叫做内部锁或者Monitor锁。 Monitor 是线程私有的数据结构,每一个线程都有一个可用monit...原创 2018-08-16 23:11:29 · 3940 阅读 · 0 评论 -
读懂Java字节码
目录一、简单demo分析字节码文件信息常量池方法表集合二、分析try-catch-finally的demo计算机只认识0和1。这意味着任何语言编写的程序最终都需要经过编译器编译成机器码才能被计算机执行。所以,我们所编写的程序在不同的平台上运行前都要经过重新编译才能被执行。 而Java刚诞生的时候曾经提过一个非常著名的宣传口号: "一次编写,到处运行"。为了实现该目的,Sun...原创 2018-08-07 23:58:18 · 6589 阅读 · 1 评论 -
jvm性能分析命令
jps列出本机所有的jvm实例jinfo pid 列出运行中的Java程序的运行环境参数jstack pid 打印Java线程的堆栈,跟踪那些线程被阻塞或正等待jmap 18544 物理内存使用情况jmap -histo 18544 打印每个class的实例数目,内存占用,类全名信息jamp -dump:file=jamp.heapdump 18544 导出进程heapdump文件...原创 2018-07-30 19:55:41 · 577 阅读 · 0 评论 -
thread dump分析
一、thread dump信息获取1、发送信号* In Unix, use "kill -3 <pid>" where pid is the Process ID of the JVM.(kill 信号列表)* In Windows, press CTRL+BREAK on the window where the JVM is running.2、通过命令导出文本文件jps...原创 2018-07-30 19:55:05 · 9410 阅读 · 0 评论 -
类初始化流程
一、类的初始化顺序(静态变量、静态初始化块:决于它们在类中出现的先后顺序)>(变量、初始化块:决于它们在类中出现的先后顺序)>构造器原理:1、加载类信息。在实例化对象之前,类的装载器会找到需要加载的类class文件,进行类的加载(有父类的会先加载父类),一旦加载到最根上的基类,就会对基类的静态变量和静态初始化块进行初始化;2、当所有类信息加载完毕就会执行main()主方法,然后执...原创 2018-07-27 13:15:18 · 3799 阅读 · 0 评论 -
jvm---类加载
类加载 类的初始化顺序: 原理 有父类的加载顺序 不进行类信息的初始化 通过类引用静态常量 类引用静态变量的情况 通过数组定义来引用类,不会触发此类的初始化 类加载器双亲委派模型(ClassLoader抽象类) 双亲委派模型,约定类加载器的加载机制 Bootstr...原创 2018-07-26 21:05:03 · 113 阅读 · 0 评论 -
JVM的内存区域划分(jdk7和jdk8)
目录前言1、什么是JVM2、JRE/JDK/JVM是什么关系3、JVM执行程序的过程4、 JVM的生命周期5、JVM垃圾回收一.运行时数据区的组成1.程序计数器2.Java栈(虚拟机栈)1)、局部变量表2)、操作数栈3)、指向运行时常量池的引用4)、方法返回地址3.本地方法栈4.堆5.方法区 直接内存(Direct Memo...原创 2018-08-08 11:58:29 · 16448 阅读 · 10 评论