
JVM
文章平均质量分 96
云卷云舒 .
更多博客:
https://www.cnblogs.com/ccink/
https://notecc.ink/
展开
-
JVM学习笔记(四)——Java内存模型和线程安全
由于计算机的运算能力十分强大而且和计算机的存储和通信子系统的的速度差距过大,大量时间都花费在I/O、网络通信和数据库访问上,因此让计算机同时处理几项任务是最容易而且也更有效的“压榨”计算机运算能力的手段。 处理器至少要与内存交互,如读取数据、存储运算结果等。这个I/O操作是几乎无法消除的。而且由于计算机存储设备和处理器运算速度上相差好几个数量级,因此我们在内存和处理器之间加入一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存和处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进...原创 2020-07-25 09:07:30 · 254 阅读 · 0 评论 -
JVM学习笔记(三)——类加载机制
虚拟机的类加载机制就是虚拟机把Java类的源码编译为字节码后,将其读取进内存,并对数据进行校验、转换解析和初始化、最终形成可以被虚拟机直接使用的Java类型。 一、类加载的时机 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用、卸载7个阶段。其中验证、准备、解析三个阶段统称为连接。 其中解析的阶段的顺序可能会发生变化,某些情况下可能会在初始化后再开始,另外注意这里的几个阶段是按顺序开始,而不是按顺序进行或完成,因为这些阶段通常都是互相交叉地混原创 2020-07-25 09:05:17 · 271 阅读 · 0 评论 -
JVM学习笔记(二)——垃圾收集器和内存分配策略
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外的人想进去,墙内的人却想出去。 对于Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域的内存随线程而生,随线程而灭。所以方法或者线程结束的时候,内存就自然的随着回收了。而Java堆和方法区的内存则不一样,这些部分的内存是需要动态分配的。 栈中的栈帧随着方法的进入和退出而有条不紊地执行着入栈和出栈的操作。每一个线栈中分配多少内存基本上是在类结构确定下来时就已知的。 Java堆和方法区中,一个接口的原创 2020-07-25 09:04:02 · 179 阅读 · 0 评论 -
JVM学习笔记(一) ——Java虚拟机内存结构
JAVA虚拟机内存结构 JAVA虚拟机内存结构可分为公有和私有两部分 公有: 堆、方法区、运行时常量池 私有: 程序计数器、JAVA虚拟机栈、本地方法栈 1.1 程序计数器 可以看当前线程所执行字节码的行号指示器 分支、循环、跳转、异常处理等基础功能都需要依赖计数器完成 Java虚拟机的多线程是通过线程轮流切换并分配执行时间的方式来实现的,因此任何一个时刻,一个处理器(多核处理器的一个内核)都只会执行一条线程中的指令。因此,通过程序计数器可以做到线程切换后能够恢复到正确的执行位置。 如原创 2020-07-25 09:01:40 · 128 阅读 · 0 评论