![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
虚拟机
wade_2hou
此博客只是对一些平时用到过的技术的总结和自我理解。希望可以在一定的程度上会对浏览到此博客的学习者有一定帮助!
展开
-
JVM——垃圾收集器与内存分配策略(三)
对于垃圾收回我们主要关注3件事情: 1.哪些内存需要回收? 2.什么时候回收? 3.如何回收? 在java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈这3个区域随线程而生,随线程而灭。栈中的栈帧随着方法的进入和退出而有条不紊地执行这入栈和出栈,每一个栈帧中分配多少内存基本在类结构确定下来时就已知的,因此在这一个区域的内存分配和回收都具备确定性,不需要过多考虑回收的问题。 而jav...原创 2019-07-09 22:28:55 · 101 阅读 · 0 评论 -
JVM——Synchronized
一、逃逸分析 逃逸分析(Escape Analyis)是目前Java虚拟机中比较前言的优化技术,它与类型继承关系分析一样,并不是直接优化代码的手段,而是为其他优化手段提供依据的分析技术。 逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用,例如作为调用参数传递到其他方法中,称为方法逃逸。甚至还有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的...原创 2019-07-18 20:46:40 · 255 阅读 · 0 评论 -
JVM——虚拟机性能监控(七)
打发士原创 2019-07-11 22:06:45 · 118 阅读 · 0 评论 -
JVM——java对象的创建和访问(二)
一、对象的创建 在Java程序运行的过程中无时无刻都有对象被创建出来。在虚拟机中单接受到创建对象(仅讨论普通对象的创建)命令时,虚拟机首先将检查这个指令的参数是否能在运行时常量池中定位到一个类的符号引用,并检查是否已经被加载、解析和初始化过。如果没有先要进行类的加载。在类加载通过后,虚拟机将为新生对象分配内存,对象所需的内存的大小在类加载完成后就可以完全确定。 1.1、内存的分配方式 内存分配有两...原创 2019-07-06 23:49:31 · 219 阅读 · 0 评论 -
JVM——虚拟机运行时数据区域(一)
关于虚拟机模块的文章都是基于JDK1.8来分析。 一、虚拟机运行时数据区域 1.2、程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行代码的行号指示器。在虚拟机的概念里,字节码解 释器工作时就是通过改变 ...原创 2019-07-06 20:35:01 · 116 阅读 · 0 评论 -
JVM——类加载器
在java虚拟机中,任意一个类,都需要由加载它的类加载器和这个类本身一同确定其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。就是说,比较两个类是否”相等“,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个Class文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那这两个类就必不相等。 ...原创 2019-07-15 20:31:35 · 113 阅读 · 0 评论 -
JVM——垃圾收集器(五)
todo原创 2019-07-11 21:06:57 · 82 阅读 · 0 评论 -
JVM——垃圾收集算法(四)
一、垃圾收集算法 1.1、标记-清除 该算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收被标记的对象,标记过程在前一章节中已经介绍过。它是最基础的收集算法,后续的收集算法都是基于这种思路并对其不足进行改进。它的不足主要有两个:一个是效率问题,标记和清除两个过程的效率都不高,另一个是空间问题,标记清除后会产生大量连续的内存碎片,空间碎片太多可能会导致以后在运行过...原创 2019-07-10 21:33:50 · 105 阅读 · 0 评论 -
JVM——虚拟机类加载机制
虚拟机把类描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制 一、类加载的时机 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载。其中验证、准备、解析三个部分统称为连接。 加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程...原创 2019-07-14 22:05:52 · 113 阅读 · 0 评论 -
JVM——Java内存模型与线程
Java虚拟机规范中试图定义一种Java内存模型(JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。 1.1、主内存与工作内存 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量(Variables)与Java编程中所说的变量有所区别,它包括实例字段、静态字段...原创 2019-07-17 21:59:50 · 151 阅读 · 0 评论