![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
#FJW
这个作者很懒,什么都没留下…
展开
-
类加载器
1、什么是类加载器类加载器是一个用来加载类文件的类。Java源代码通过javac编译器编译成类文件。然后JVM来执行类文件中的字节码来执行程序。类加载器负责加载文件系统、网络或其他来源的类文件。2、类加载器有哪些Java的类加载器有三个,对应Java的三种类:3、类加载器双亲委派模型机制JVM中加载类机制采用的是双亲委派模型,顾名思义,在该模型中,子类加载器收到的加载请求,不会先去...原创 2020-04-09 11:05:33 · 74 阅读 · 0 评论 -
Java 类加载过程
在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备、解析装载:查找和导入类或接口的二进制数据;链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;校验:检查导入类或接口的二进制数据的正确性;准备:给类的静态变量分配并初始化存储空间;解析:将符号引用转成直接引用;初始化:激活类的静态变量,初始化Java代...原创 2020-04-09 10:55:36 · 70 阅读 · 0 评论 -
Java程序执行过程
一、基本概念每运行一个java程序会产生一个java进程,每个java进程可能包含一个或者多个线程,每一个Java进程对应唯一一个JVM实例,每一个JVM实例唯一对应一个堆,每一个线程有一个自己私有的栈。进程所创建的所有类的实例(也就是对象)或数组(指的是数组的本身,不是引用)都放在堆中,并由该进程所有的线程共享。Java中分配堆内存是自动初始化的,即为一个对象分配内存的时候,会初始化这个对象中...原创 2020-04-09 10:52:48 · 255 阅读 · 0 评论 -
Java内存区域与内存溢出异常
一、运行时数据区域概念:Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据域。这些区域都有各自的内存,以及创建和销毁的时间,有的预取随着虚拟机进程的启动存在,有些区域则依赖用户线程的启动和结束而简历和销毁。五个运行时数据区:程序计数器内存空间较小,它是线程私有的,是当前线程所执行的字节码行号指示器。是唯一一个在Java虚拟机规范中没有规定没有任何OutOf...原创 2019-11-27 16:20:50 · 83 阅读 · 0 评论 -
CAS
AtomicInteger的原子性,底层用的为什么要用CAS而不是synchronized?CAS的认识CAS的全称为Compare-And-Swap,它是一条CPU并发原语。它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的。CAS并发原语体现在JAVA语言中就是sun.misc.Unsafe类中的各个方法。调用UnSafe类中的CAS方法,JVM会帮我们实...原创 2019-11-26 20:47:54 · 112 阅读 · 0 评论 -
JMM内存模型
一、volatile的理解volatile是Java虚拟机提供的轻量级的同步机制volatile的三大特性:保证可见性,不保证原子性,禁止指令重排二、JMM(Java内存模型)JMM(Java内存模型Java Memory Model)本身是一种抽象的概念并不真实存在,在java中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享(本文使用“共享变量”这个术语代指实例域,...原创 2019-11-26 11:00:23 · 141 阅读 · 0 评论 -
JVM内存回收执行过程
JVM一旦启动,就会创建一个守护线程来监测是否需要有对象内存被释放System.gc(),只是提醒JVM可以进行一次Full GC,但是什么时候真正执行,还是不确定的...原创 2019-11-23 21:53:27 · 202 阅读 · 0 评论