JVM
文章平均质量分 83
我的Coder小屋
本科阶段:延安大学(2015-2019),摸鱼四年。
研究生阶段:西北大学(2019-2022),还未结束,主编程语言Java
展开
-
虚拟机类加载机制详解
虚拟机类加载机制详解 1 概述 Java虚拟机把描述类的数据从Class文件加载到内存, 并对数据进行校验、转化解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程称为虚拟机的类加载机制。在Java语言中,类型的加载、连接和初始化都是在程序运行期间完成的。 2 类的加载时机 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载、验证、准备、解析、初始化、使用和卸载七个阶段,其中验证、准备和解析三个部分统称为连接。发生顺序如下: 《Java虚拟机原创 2021-07-14 17:24:03 · 101 阅读 · 0 评论 -
Java中OOM异常的情况案例
Java中OOM异常的情况总结 在《Java虚拟机规范》中规定,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError异常的可能。即会出现如下OOM异常: Java堆溢出 Java堆用于存储对象实例,只要是不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制来清除这些对象,那么随着对象的增加,总容量触及最大堆的容量限制后就会产生内存溢出异常。 虚拟机栈和本地方法栈溢出 1)如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOv原创 2021-07-12 08:45:13 · 255 阅读 · 1 评论 -
java8和java7运行时数据区域的区别
java8和java7运行时数据区域的区别 1 运行时数据区域 Java7中运行时数据区域有:Java堆、方法区、程序计数器、虚拟机栈、本地方法栈。 Java8(Hotspot)中把方法区永久删除了,取而代之的是元空间,使用的是直接内存。 2 为什么方法区会被叫做永久代 《Java 虚拟机规范》只是规定了有方法区这么个概念和它的作用,并没有规定如何去实现它。那么,在不同的 JVM 上方法区的实现肯定是不同的了。 方法区和永久代的关系很像 Java 中接口和类的关系,类实现了接口,而永久代就原创 2021-07-07 09:00:07 · 187 阅读 · 0 评论 -
浅谈垃圾收集器(GC)
浅谈垃圾收集器(GC) 1 思考 《深入理解JVM虚拟机》中这样说道:“Java和C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙”。显然Java中的一个最大特性就是垃圾收集,垃圾收集这一技术诞生的作者思考过垃圾收集需要完成的三件事情: 哪些内存需要回收? 什么时候回收? 如何回收? 我们从这三个问题去真正认识一下垃圾回收器,以及为什么这堵墙墙外的人想进去,墙里面的人想出去? 2 JVM运行时数据区域 如上图所示(源自网络),本地方法栈、虚拟栈、程序计数器三个区域随线程原创 2021-07-07 08:57:28 · 128 阅读 · 0 评论