![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 75
有裂痕的石头
埋头苦干,未来可期
展开
-
Java堆溢出,虚拟机栈和本地方法栈溢出
Java堆溢出JVM运行时分区的堆区是占比最大的,它用来存储对象的,每当我们new一个对象,而且要保证这个对象到GC Roots 那些对象是有路径可达的(不可达就有很大可能性被清除),那么当对象的数量超过最大堆容量后就会产生内存溢出异常(Out Of Memory)。我们可以自己设置JVM的相关参数:-Xms:用来设置堆的最小值;-Xms:用来设置堆的最大值。Java堆内存出现的OOM异常其实是我们实际开发中最常见的内存溢出的一种情况。Java堆内存溢出时,Java异常堆栈信息“java.lang原创 2021-08-08 10:23:27 · 257 阅读 · 0 评论 -
JVM垃圾回收,面试问到的都有了
为什么我们在写Java程序的时候没有过多地去关注内存的分配和回收问题?因为JVM会帮助我们完成这两个工作,准确的说是JVM内存管理器来完成的。内存管理器(Memroy Collector)通常我们又叫它垃圾回收器(Garbage Collector)也就是GC。在上一篇博客中我们讲了JVM运行时内存分区,大体上分为线程共享和线程私有,线程私有的分区有Java虚拟栈,本地方法栈和程序计数器,对于这三个内存分区的具体分配和回收是显而易见的,他们的生命周期与线程的创建和结束同步,是确定的,因此这篇博客我们讨论方原创 2021-08-07 00:12:35 · 114 阅读 · 0 评论 -
初识JVM执行引擎
这篇博客主要记录我对执行引擎刚开始学习的认识。当程序开始运行之后,开始以下步骤:1.执行类的加载。2.创建主线程3.启动类main方法第一条字节码所在地址放入主线程pc(程序计数器)中4.开始执行引擎的整形周期那么什么是执行引擎的执行周期呢?想象一个执行引擎是C语言写的,字节码最终表现为 unsigned int32_t。那么执行周期就如下所示:执行引擎还有一个重要的责任:负责优化执行逻辑。把这个过程称为:JIT(Just In Time)即时化编译,负责把用户的代码进行无害改写,这个原创 2021-08-02 12:56:57 · 57 阅读 · 0 评论 -
Java类的加载过程,类加载器,双亲委派原则
Java一个类的加载过程:1.加载a.jvm会根据类名找到对应的类文件b.进行文件内容读取2.链接链接主要是验证类中数据是否合法,然后把刚加载进来的类和其他类和其他类的惯性系建立清楚,主要有以下几个步骤a.验证b.准备c.解析3.初始化a.在内存对应位置申请空间b.按照jvm的组织方式,将数据放到各自位置c.执行类的静态初始化说到这里就不得不说一下静态属性的初始化顺序:1.父类的初始化必须在子类的初始化之前2.每个类中的初始化可以按照代码书写顺序依次进行,这里可能有两种书写风格原创 2021-08-02 11:19:06 · 91 阅读 · 0 评论 -
JVM运行时内存分区
什么是JVM?JVM概述——初识JVM(类加载器,垃圾回收器,执行引擎)上一篇博客我们对jvm以及它的三个“部件”有了初步的认识,这一篇我们探讨一下源码经过编译、加载后这些数据被jvm分类存储在内存中,根据数据的特性,jvm从逻辑上把内存划分为以下几个区域:方法区、虚拟机栈、本地方法栈、程序计数器、堆。程序计数器(线程私有)程序计数器是一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。如果当前线程正在执行一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果原创 2021-08-01 19:23:14 · 245 阅读 · 0 评论 -
什么是JVM?JVM概述——初识JVM(类加载器,垃圾回收器,执行引擎)
此篇文章属于作者初识之后的概述总结,谈论的层面很浅,大佬勿喷。目录类加载器内存管理器(垃圾回收器)执行引擎JVM全称是Java Virtual Machine,意为java虚拟机,所以要了解什么是JVM我们应该先了解什么是虚拟机。虚拟机指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整的的计算机系统。虚拟机模拟为什么要模拟一个计算机系统?因为这样做就可以让java程序员不用太多的关注底层操作系统和计算机组成方面的东西,我们编写出的代码在jvm之上运行,这大大减小了java程序员的负原创 2021-07-30 11:18:51 · 248 阅读 · 0 评论