- 博客(5)
- 收藏
- 关注
原创 JVM八股文系列一:JVM基础知识
一.JVM 基础知识 1.JVM 从编译到执行 1.1Java 程序的执行过程 一个 Java 程序,首先经过 javac 编译成 .class 文件,然后 JVM 将其加载到方法区,执行引擎将会执行这些字节码。执行时,会翻译成操作系统相 关的函数。JVM 作为 .class 文件的翻译存在,输入字节码,调用操作系统函数。 过程如下:Java 文件->编译器>字节码->JVM->机器码。 JVM也就是Java 虚拟机。它能识别 .class 后缀的文件,并且能够解析它的指令,最终调
2021-03-26 01:22:28
854
原创 第一章:Spring源码解析之XML的解析01----XML的解析流程
XML的解析流程 举例 我们先有一个学生类 然后我们在xml里面声明这个学生类的bean 写一个简单的test1,运行 结果出来了 xml解析的入口 1.我们进入test1里面的ClassPathXmlApplicationContext方法中,如下图 点击箭头的方法,进入 这个refresh()就是重要的spring核心方法,是spring初始化容器的核心流程。所有的bean的初始化都是在这里完成的。 refresh()方法流程分析 直接看图吧,这里先大概看看。我们只要关注第二步的代码就可以了。
2021-03-09 00:27:57
327
原创 没人看的JVM之堆和JHSDBG工具(3)
堆和JHSDBG工具和内存溢出 JVM运行内存的整体流程 JVM 在操作系统上启动,申请内存,先进行运行时数据区的初始化,然后把类加载到方法区,最后执行方法。 方法的执行和退出过程在内存上的体现上就是虚拟机栈中栈帧的入栈和出栈。 同时在方法的执行过程中创建的对象一般情况下都是放在堆中,最后堆中的对象也是需要进行垃圾回收清理的。 步骤分析 首先启动项目时设置jvm参数**-Xms30m -Xmx30m -Xss1m -XX:MaxMetaspaceSize=30m** 意思分别是 初始堆内存,最大堆
2020-08-17 00:26:10
386
原创 没人看的JVM之方法的运行与虚拟机栈(2)
JVM内存区域 运行时数据区(必须掌握) Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域 Java 引以为豪的就是它的自动内存管理机制。相比于 C++的手动内存管理、复杂难以理解的指针等,Java 程序写起来就方便的多。 直接内存:前面我们说了JVM内存是虚拟化的,那部分没有被虚拟的内存就叫直接内存也可以叫做堆外内存。这个虽然不是运行时数据区的一部分,但是会被频繁使用。你可以理解成没有被虚拟机化的操作系统上的其他内存(比如操作 系统上有 8G 内存,被 JVM
2020-08-15 23:29:34
395
1
原创 没人看的JVM之JVM概述和学习规划(1)
JVM概述和学习规划 JVM的前世今生(了解即可) Hotspot:目前使用的最多的 Java 虚拟机。在命令行 java –version。它会输出你现在使用的虚拟机的名字、版本等信息、执行模式。 Jrocket:原来属于BEA 公司,曾号称世界上最快的 JVM,后被 Oracle 公司收购,合并于 Hotspot J9: IBM 有自己的 java 虚拟机实现,它的名字叫做 J9. 主要是用在 IBM 产品(IBM WebSphere 和 IBM 的 AIX 平台上) TaobaoVM: 只有一定体量
2020-08-15 21:50:50
405
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅