java虚拟机理解探索1
以下内容源于个人对《深入java虚拟机》的理解总结 基本概念: java虚拟机可以指一种抽象规范,也可以指一种具体实现,亦可以指一个java虚拟机实例。 虚拟机生命周期: 一个java虚拟机实例的天职是:负责运行一个java程序。当启动一个java程序时,一个虚拟机实例诞生。程序关闭退出,虚拟机实例亦随之消亡。如果在同一台计算机上运行三个java程序,将得到三个java虚拟机实例。每个java程序都运行与它自己的java虚拟机实例中。 一个java虚拟机实例通过调用main()方法来运行一个java程序。 垃圾收集 垃圾收集器的主要工作就是自动回收不再被运行的程序引用的对象所占的内存。此外它也可能去移动那些还在使用的对象,以此减少碎片。 在谈论垃圾回收前,首先了解下java虚拟机的内部体系结构,如下图所示 中间虚线框部分为运行时数据区域,由5部分组成,分别为方法区,堆,栈,程序计数器及本地方法栈。 1.程序计数器 对于一个运行中的java程序而言,其中每一个线程都有自己的PC寄存器,它是该线程启动时创建。 它的作用可以看做当前字节码执行的位置指示器。 2.本地方法栈 任何本地方法接口都会使用本地方法栈。当线程调用本地方法时,虚拟机会创建一个新的栈帧并压人java栈,然而当它调用的是本地方法时,虚拟机会保持java栈不变,不再在线程的java栈中压人新的帧。虚拟机只是简单的动态连接