jvm
哲里哲里
更好的自己
展开
-
jvm整理 | 线程的创建
实现线程主要有三种方式:使用内核线程实现(1:1实现),使用用户线程实现(1:N实现),使用用户线程加轻量级进程混合实现(N:M实现)4.Java线程的实现Java线程如何实现并不受Java虚拟机规范的约束,这是一个与具体虚拟机相关的话题。Java线程在早期的Classic虚拟机上(JDK 1.2以前),是基于一种被称为“绿色线程”(Green Threads)的用户线程实现的,但从JDK 1.3起,“主流”平台上的“主流”商用Java虚拟机的线程模型普遍都被替换为基于操作系统原生线程模型来..原创 2020-10-08 22:37:35 · 231 阅读 · 0 评论 -
jvm整理 | 反射原理
https://www.cnblogs.com/zabulon/p/5826610.htmlhttps://www.cnblogs.com/yougewe/p/10125073.htmlhttps://blog.csdn.net/weixin_42724467/article/details/84311385原创 2020-10-08 07:46:33 · 413 阅读 · 0 评论 -
jvm整理 | 内存间交互
Java内存模型规定了所有的变量都存储在主内存(Main Memory)中线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的数据Java内存模型中定义了以下8种操作来完成。Java虚拟机实现时必须保证下面提及的每一种操作都是原子的、不可再分的·lock(锁定):作用于主内存的变量,它把一个变量标识为一条线程独占的状态。·unlock(解锁):作用于主内存的变量,它把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定。·read(..原创 2020-09-29 00:31:54 · 176 阅读 · 0 评论 -
jvm整理 | 垃圾回收
1、可达性算法分析 GC Roots:虚拟机栈中引用的对象、方法区中类静态属性引用的对象、方法区中常量引用的对象、Native方法中引用的对象、java虚拟机内部的引用(基本数据类型的Class对象,异常对象,系统类加载器)、被Synchronized 持有的对象2、引用 如果reference 类型的数据中存储的数值代表的是另外一块内存的起始地址,就称改reference数据是代表某块内存,某个对象的引用。 ...原创 2020-09-10 09:30:18 · 184 阅读 · 0 评论 -
jvm 整理 | 对象的创建
1、当Java虚拟机遇到一条new指令时,首先会去检查这条指令的参数是否能在常量池中定位一个类的符号引用2、判断是否进行过类加载3、内存分配: 指针碰撞:java堆内存规整,垃圾收集器具备空间压缩整理能力(Serial、ParNew) 空闲列表:内存不规整,维护一个列表来记录哪块内存是可用的,垃圾收集器具备标记-清除(CMS)(并发分配是否会出现问题? 会:可能出现正在给对象A分配内存,指针还没来得及修改,对象B又同时使用了原来的指...原创 2020-09-01 20:25:02 · 161 阅读 · 0 评论 -
jvm 整理 | 运行时数据区
线程共享:堆、方法区线程隔离:虚拟机栈、本地方法栈、程序计数器程序计数器:一块较小的内存空间,执行的字节码的行号指示器虚拟机栈:用于Java方法执行的线程内存模型,存储 局部变量表、操作数栈、动态链接、方法出口 局部变量表存储了编译期可知的各种基本数据类型(以局部变量槽Slot为单位,long 和 double 占两位,其余只占一个)+对象引用 如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverf...原创 2020-08-31 23:29:27 · 165 阅读 · 0 评论 -
jvm整理 | 类加载机制
一、类的加载过程参考:https://blog.csdn.net/xuemengrui12/article/details/827074731、一个Java文件从编码完成到最终执行,一般主要包括两个过程编译,即把我们写好的java文件,通过javac命令编译成字节码,也就是我们常说的.class文件。运行,则是把编译声称的.class文件交给Java虚拟机(JVM)执行。而我们所说的...原创 2019-12-19 00:02:00 · 169 阅读 · 0 评论