
JVM
文章平均质量分 92
Darren i
这个作者很懒,什么都没留下…
展开
-
一文理类加载相关知识:类加载器、双亲委派、SPI
思维导图类加载的时机类加载的流程类从被加载到内存中开始,直到被从内存中卸载为止,它的整个生命周期包括:验证、准备、解析、初始化、使用和卸载7 个阶段。其中验证、准备、解析 3 个部分统称为连接(Linking)1.加载(重点)类加载过程的第一步,主要完成下面 3 件事情:通过全类名获取定义此类的二进制字节流将字节流所代表的静态存储结构转换为方法区的运行时数据结构在内存中生成一个代表该类的 Class 对象,作为方法区这些数据的访问入口加载阶段(准确地说,是加载阶段中获取类的二进原创 2021-06-22 15:23:13 · 268 阅读 · 0 评论 -
happen-before原则的理解
前言在程序执行时,为了提高性能,编译器和处理器会对指令进行重排序。为了明确定义多线程场景下重排序的问题(可见性、有序性、原子性),Java引入了JMM(Java Memory Model),也就是Java内存模型。JMM为JAVA程序员提供了8条规则,即happen-before原则。根据happen-before原则,就可以在不理解复杂的重排序规则情况下,解决因重排序而导致的多线程间可见性、有序性等问题。happen-before原则两个操作具有happen-before关系,并不意味着前一个操原创 2021-06-20 11:49:34 · 558 阅读 · 0 评论 -
JVM内存结构分析:为什么需要S0和S1?
一、为什么会有年轻代我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话,我们把新创建的对象放到某一地方,当GC的时候先把这块存“朝生夕死”对象的区域进行回收,这样就会腾出很大的空间出来。二.年轻代中的GC新生代大小(PSYoungGen total 9216K)=eden大小(e转载 2021-06-11 10:31:48 · 4737 阅读 · 5 评论 -
Java内存区域(运行时数据区域)和内存模型(JMM)
原文作者:czwbig原文:https://www.cnblogs.com/czwbig/p/11127124.htmlJava 内存区域和内存模型是不一样的东西,内存区域是指 Jvm 运行时将数据分区域存储,强调对内存空间的划分。而内存模型(Java Memory Model,简称 JMM )是定义了线程和主内存之间的抽象关系,即 JMM 定义了 JVM 在计算机内存(RAM)中的工作方式,如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java运行时数据区域众所周知,Jav转载 2020-11-26 14:35:48 · 132 阅读 · 0 评论