随笔分类 -  JVM

摘要:阻塞IO模型 非阻塞IO模型 多路复用IO模型 信号驱动IO模型 异步IO模型 1 阻塞IO模型 最传统的一种 IO 模型,即在读写数据过程中会发生阻塞现象。当用户线程发出 IO 请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出 CPU。当数 阅读全文
posted @ 2020-06-05 09:30 寻尘向阳 阅读(155) 评论(0) 推荐(0)
摘要:1. 什么是类加载 由上图可以很清晰地看出,类加载所处的位置,用一句话解释:类的加载是指如何将类的.class文件的二进制数据读入到JVM的内存中过程。 2. 类的加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。 其 阅读全文
posted @ 2020-05-21 16:36 寻尘向阳 阅读(143) 评论(0) 推荐(0)
摘要:本篇为转载篇,原文出处 作者:阿凡卢 什么是ThreadLocal变量 ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意: 因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 阅读全文
posted @ 2020-05-18 15:00 寻尘向阳 阅读(647) 评论(0) 推荐(0)
摘要:本篇将从volatile和synchronized所引发的代码问题开始,进入底层原理挖掘,一方面促进自己学习的同时,另一方面也希望能帮助别的小伙伴,如有问题之处,欢迎指导纠正。 首先看以下一段代码: 1 /** 2 * 验证volatile原子性 3 */ 4 public class Atomic 阅读全文
posted @ 2020-05-15 21:38 寻尘向阳 阅读(500) 评论(0) 推荐(0)
摘要:ps:该篇为复用篇,查看原著请移步:https://www.cnblogs.com/chenpt/p/9803298.html,另外一篇同时也进一步介绍了调优方面的知识,在此也标记下,以作进一步学习和借鉴:https://www.cnblogs.com/zhguang/p/Java-JVM-GC.h 阅读全文
posted @ 2020-04-30 00:55 寻尘向阳 阅读(194) 评论(0) 推荐(0)
摘要:一、GC概念 GC定义: Garbage Collection 垃圾收集。这里所谓的垃圾指的是在系统运行过程当中所产生的一些无用的对象,这些对象占据着一定的内存空间,如果长期不被释放,可能导致OOM。 为什么引入GC: 由于Java不像c/c++那样可以由程序猿去控制内存空间的分配、管理、释放,因此 阅读全文
posted @ 2020-04-28 21:15 寻尘向阳 阅读(356) 评论(0) 推荐(0)
摘要:一、程序计数器(Programmer Counter Register) 程序计数器是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础 阅读全文
posted @ 2020-04-27 23:39 寻尘向阳 阅读(315) 评论(0) 推荐(0)
摘要:一、虚拟机栈 1. 什么是虚拟机栈? 虚拟机栈是用于描述java方法执行的内存模型。 每个java方法在执行时,会创建一个“栈帧(stack frame)”,栈帧的结构分为“局部变量表、操作数栈、动态链接、方法出口(方法返回地址)。我们常说的“堆内存、栈内存”中的“栈内存”指的便是虚拟机栈,确切地说 阅读全文
posted @ 2020-04-27 00:44 寻尘向阳 阅读(447) 评论(0) 推荐(0)
摘要:上一篇线程共享分类图显示,堆和方法区都是线程共享的区域,在 HotSpot JVM 中,永久代( ≈ 方法区)中用于存放虚拟机加载的类信息、常量池、静态属性。每当一个类初次被加载的时候,都会放到永久代中。 永久代是有大小限制的,因此如果加载的类太多,很有可能导致永久代内存溢出,即万恶的java.la 阅读全文
posted @ 2020-04-26 23:13 寻尘向阳 阅读(575) 评论(0) 推荐(0)
摘要:~~~上一篇章了解到了JVM内存分布,之所以把堆区放在第二篇来讲,是因为堆在我们整个JVM学习过程中起着最为关键和重要的角色,同时对于我而言,这块有必要着重详细地记录下笔记。~~~ 学习java之初,我们知道类中创建的实例对象、数组都是存放在堆区(Heap),对象的引用、局部变量存放栈区(Stack 阅读全文
posted @ 2020-04-25 00:31 寻尘向阳 阅读(421) 评论(0) 推荐(0)
摘要:内存是非常重要的系统资源,是硬盘和CPU的中间仓库和桥梁,承载着操作系统和应用程序的实时运行。JVM 内存布局规定了 Java 在运行过程中内存申请、分配、管理的策略,保证了 JVM 的高效稳定运行。 【注:JVM内存布局(内存结构)和JMM内存模型是两个不同的概念】 图例所示是java8以上的内存 阅读全文
posted @ 2020-04-24 13:42 寻尘向阳 阅读(123) 评论(0) 推荐(0)