随笔分类 - JVM
Java JVM
摘要:GC分类与性能指标 垃圾回收器的概述 垃圾收集器没有在规范中进行过多规定,可以由不同厂商,不同版本JVM来实现。 由于JDK的版本处于高速迭代,因此已经衍生众多GC版本。 从不同角度分析垃圾收集器,可以将GC分为不同的类型。 GC分类 按线程(垃圾回收线程1)分,分为串行垃圾回收器和并行垃圾回收器
阅读全文
摘要:System.gc()的理解 在默认情况下,通过System.gc()或Runtime.getRuntime().gc()的调用,会显示触发FullGC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。 然而System.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用。 JVM
阅读全文
摘要:什么是垃圾 垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。 如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占用的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。 为什么需要GC 对于高级语言来说,一个基本认知是如果不进行垃圾
阅读全文
摘要:标记阶段:引用计数算法 垃圾标记阶段:对象存活判断 在堆里存放几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡对象。只有被标记为已经死亡的对象,GC才会在执行垃圾回收时,释放其占用的内存空间,因此这个过程称为垃圾标记阶段。 在JVM中,简单来说,
阅读全文
摘要:String的基本特性 String字符串,使用一对""来表示。 String声明为final的,不可被继承。 String实现了Serializable接口:表示字符串是支持序列化的。实现comparable接口,表示可以比较大小。 String在jdk1.8及以前内部定义final char[]
阅读全文
摘要:执行引擎的概述 执行引擎是Java虚拟机核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而**虚拟机的执行引擎则是由软件自行实现的,**因此可以不受物理条件制约地定制指令集与执行引擎
阅读全文
摘要:对象的创建方式 对象的创建步骤 以上可以概括为: 加载类元信息 为对象分配内存 处理并发问题 属性默认初始化(零值初始化) 设置对象头信息 属性显示初始化、代码块初始化、构造器初始化 对象的内存布局 图示说明内存布局: 例:有如下代码 对应的内存布局如下: 对象的访问定位 句柄访问: 好处: ref
阅读全文
摘要:栈、堆、方法区交互关系 运行时内存图(线程共享与否的角度来看) 栈、堆、方法区的交互关系: 方法区的理解 《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者压缩”。但对于HotSpotJVM而言,方法区还有一个别名叫做Non-H
阅读全文
摘要:堆的核心概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。(如下例1) Java堆在JVM启动时被创建,其空间大小也就被确定了。是JVM管理的最大一块内存空间。(JVM堆内存的大小是可调节的) 《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被是
阅读全文
摘要:方法1:直接添加 1.在jdk安装路径打开 bin/jvisualvm.exe 如下: 2.选择 Tools>Plugins 如下: 点击 Settings>Edit 产看URL是否正确,其中URL地址对应的是自己jdk对应的版本。对应URL查找地址https://visualvm.github.i
阅读全文
摘要:JVM运行时数据区 JVM运行时数据区概述 灰色区域为单独线程私有的,红色的为多个线程共享的。即:如下图 每个线程:独立包括程序计数器、虚拟机栈、本地方法栈 线程间共享:堆、堆外内存(永久代或元空间,代码缓存) 每个JVM只有一个Runtime实例,相当于内存结构图中的运行时数据区。 线程 线程是一
阅读全文
摘要:虚拟机栈 Java虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。同样,线程私有,生命周期与线程一致。 每一个方法从调用直至完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。 栈的特点: 栈是一种快速有效的分
阅读全文
摘要:概述 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机类加载机制。 HotSpot内存模型: 简图: 详细图: 类加载子系统 类加载子系统只负责从文件或网络加载class,class文件头有特定文件标识 Cl
阅读全文

浙公网安备 33010602011771号