随笔分类 - jvm
java虚拟机
摘要:1.基本概念 JVM是运行在操作系统上的可以支持运行编译执行之后的Class文件的假想计算机, 在了解下JVM,JRE,JDK之间的关系: JDK -> JRE + javac等开发工具 JRE -> JVM + 核心类库(各种jar包等) 2.运行过程 java源文件->编译器(javac工具)-
阅读全文
摘要:引导(Bootstrap)类加载器 引导类加载器主要加载的是JVM自身需要的类,这个类加载使用C++语言实现的,是虚拟机自身的一部分,它负责将 <JAVA_HOME>/lib路径下的核心类库或-Xbootclasspath参数指定的路径下的jar包加载到内存中,注意必由于虚拟机是按照文件名识别加载j
阅读全文
摘要:老年代(Old generation) 对象没有变得不可达,并且从新生代中存活下来,会被拷贝到这里。其所占用的空间要比新生代多。也正由于其相对较大的空间,发生在老年代上的GC要比新生代少得多。对象从老年代中消失的过程,我们称之为**”major GC“ ** minorGC 是清理整合YouGen的
阅读全文
摘要:一.Java堆从GC的角度去看,可以分为三个区域,分为是新生代,老年代,永久代(是方法区的实现,但是物理逻辑是和堆在一起的) 其中新生代占1/3的堆空间,老年代占2/3的堆空间,永久代占得很少,就不进行划分了,他也占了,但是很少很少,新生代占的1/3又分为Eden区(占比8/10),Servivor
阅读全文
摘要:1.方法区和永久代的关系 涉及到内存模型时,往往会提到永久代,那么它和方法区又是什么关系呢?《Java虚拟机规范》只是规定了有方法区这么个概念和它的作用,并没有规定如何去实现它。那么,在不同的 JVM 上方法区的实现肯定是不同的了。 同时大多数用的JVM都是Sun公司的HotSpot。在HotSpo
阅读全文
摘要:一.类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止, 它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶
阅读全文
摘要:1.程序计数器:指向当前线程执行的字节码指令文件的地址和行号 为了在cpu将线程挂起,进行线程切换时,能够记录当前线程的执行进程,正确安全的执行完.2.虚拟机栈:(存储当前线程运行的方法的栈帧,只有等方法执行完栈帧才会出栈) 测试看在同一给方法中的多个方法. 用来执行对应的方法所需的数据,通过对方法
阅读全文
摘要:一.java程序的具体执行过程: 1.java源文件会被java编译器编译成字节码文件 2.然后由jvm中的类加载器加载各个类的字节码文件 3.加载完后,由jvm的执行引擎执行 备注:在执行的过程中jvm一段空间来存储数据:运行时数据区,也称jvm内存 二.根据jvm规范,jvm把内存划分为了如下几
阅读全文