随笔分类 - JVM
摘要:1、JDK中的命令行工具 jps,可以列出当前机器上运行的虚拟机进程,因为是从操作系统的临时目录去获取的,所以有些信息可能不全 jstat,用于监视虚拟机各种运行状态的信息,可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据,在没有 GUI图形界面,只提供了纯文本控制台
阅读全文
摘要:Java和C++等语言最大的技术区别就是自动化的垃圾回收机制,也就是常说的GC,GC是对内存进行清理、回收 GC一般发生在堆中,同时方法区/元空间这一块也会发生垃圾回收,不过这块的效率比较低,而栈中内存会随着线程的灭亡而释放,不关注 堆中的对象通过引用计数算法、可达性分析来判断是否存活、是否可以进行
阅读全文
摘要:1、虚拟机运行时栈帧结构 栈帧在JVM中属于线程私有的区域,用来存储方法的局部变量表、操作数栈、动态连接和完成出口,每一个方法从调用开始到执行完毕,都对应着一个栈帧在虚拟机栈里从入栈到出栈的过 程序编译的时候,栈帧需要多大的局部变量表、多深的操作数栈都已经完全确定了,并且写入到方法表的code属性中
阅读全文
摘要:1、Class文件结构 Java中程序会编译成class文件运行在JVM平台中,其实JVM具有平台微惯性,不仅仅可以运行Java程序,它其实是与Class文件这种特定的二进制文件进行关联的,Class文件中包含了虚拟机指令、符号表以及程序运行的相关信息,并且为了安全,JVM对Class文件规定了许多
阅读全文
摘要:1、对象的创建 A a = new A() A:引用的类型 a::引用的名称 new A():创建一个A类对象 当创建一个对象时,具体创建过程是什么呢? (1)JVM遇到new的字节码指令后,检查类是否被加载,否,进行类加载 (2)检查加载通过后,对新创建的对象在堆中分配内存 (3)将分配的内存空间
阅读全文
摘要:1、JVM中的内存结构 从OS的角度来看,JVM运行时会把一部分内存虚拟机化,所以把内存分为直接内存(未被虚拟机化的内存)和运行时数据区(被虚拟机化的内存) JVM的运行时数据区若从线程的角度来看,可分为线程共享的区域和线程私有的区域 线程共享区主要由方法区、堆组成,其中方法区还会划分出一部分作为运
阅读全文
摘要:1、JVM、JRE、JDK JVM:是可以将要运行的程序编译成机器语言并去执行的一个平台,具有跨语言、跨平台的特性,运行时需要依赖JRE中的类库 JRE:包含了JVM以及代码运行时的类库,时Java程序运行时的环境 JDK:Java语言开发的工具包,是整个Java开发的核心,包含了JRE、Java工
阅读全文

浙公网安备 33010602011771号