随笔分类 - JVM
摘要:前面东西说完后,现在可以说一些和我们平时进行性能调优相关的东西了,那怎么看和我们JVM性能调优相关的东西呢,其实这对我们开发来说是一个比较头痛的问题,其实我们JDK官网给了一些我们相关的指令,我们可以用这些命令去排查当前JAVA中当前有多少个进程、可以知道我们内存空间中他是一个什么样的结构、哪些对象
阅读全文
摘要:一、垃圾收集器 有了前面JVM参数的了解下面来看下JVM的垃圾收集器;如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 JVM(HotSpot)有7种垃圾收集器,7种垃圾收集器作用于不同的分代,如果两个收集器之间存在连续,就说明他们可以搭配使用。从JDK1.3到现在,从Ser
阅读全文
摘要:一、垃圾收集算法 由前面文章就可以知道已经能够确定一个对象为垃圾了,接下来要考虑的就是回收,下面介绍常见的垃圾回收算法。 1.1、标记-清除(Mark-Sweep) 1.1.1、标记 标记就是找出内存中需要回收的对象,并且把它们标记出来;标记就是将堆中所有的对象都会被扫描一遍,从而才能确定需要回收的
阅读全文
摘要:一、引用 Java 中的引用的定义很传统:如果 reference (引用)类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。 这种定义很纯粹,但是太过狭隘,一个对象在这种定义下只有被引用或者没有被引用两种状态,对于如何描述一些处于判刑中又或者我们想扔又舍不得的对象就
阅读全文
摘要:一、JVM内存模型 1.1、与运行时数据区 前面讲过了运行时数据区那接下来我们聊下内存模型,JVM的内存模型指的是方法区和堆;在很多情况下网上讲解会把内存模型和运行时数据区认为是一个东西,这是错误的想法,如果不信可以自己去官网求证 内存模型我们可以分为非堆区(元空间,用的是本地内存)和堆区,在堆区分
阅读全文
摘要:一、java对象的内存布局 一个Java对象在内存中包括3个部分:对象头、实例数据和对齐填充 二、验证hashCode的储存方式 使用jol工具导入对应包、 <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</a
阅读全文
摘要:一、CPU和内存的交互 今天除夕,祝大家新年快乐,其实,我们知道的,我们的CPU跟内存会有非常频繁的交互,因为如果这个频繁的交互是交给我们的磁盘的话,那么随着我们的CPU运转速度越来越快,那么我们的磁盘的读写性能远远跟不上我们的CPU读写的速度,哪怕是我们现在的SSD,固态硬盘,也仅仅只是减少了我们
阅读全文
摘要:一、java虚拟机 官网:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-1.html#jvms-1.2 什么是JVM: Java虚拟机是Java平台的基石,其负责其硬件和操作系统的独立性,其编译的代码很小以及保护用户免受恶意程序攻击的
阅读全文
摘要:首先分享下官网网址,所有的开发说明官网才是权威,网上传播的多少会有些曲解https://www.oracle.com/index.html和https://docs.oracle.com/javase/8/,讲解JVM前我们先准备一份JAVA文件 一个java文件交给JVM的过程分为编译和加载两个过
阅读全文