浅析JVM

一、java文件的执行过程

      

 

         大部分程序执行过程分为三步:编码---编译---执行

        (1)编码:得到.java文件

        (2)编译:得到字节码(class文件)

        (3)执行:jvm进行类装载,由执行引擎转换成机器码运行

 

二、运行数据区域

       类装载和执行引擎这里不说明,只是说明jvm的运行数据区域:寄存器、本地方法栈、java栈、堆、方法区、运行常量池。下面我们来说说各个区域的功能

      (1)寄存器:每一个线程独有,主要是pc寄存器等

      (2)java栈:每一个线程独有,每当执行一个方法时,java栈就会压入一个栈帧,该栈帧存储局部变量表、操作栈等等

      (3)本地方法栈:每个线程独有,保存本地方法

      (4)堆:全部线程共享,java堆是我们最熟悉的,其中分为年轻代、年老代和永久代

      (5)方法区:方法区保存了类信息、常量、静态变量、及时编译器编译后的代码等数据

      (6)运行常量池:运行常量池属于方法区,存放类和借口的常量,存放方法和域的所有引用

        对于java堆的永久代,在hotspot虚拟机中,其实就是方法区,它在jvm运行期间几乎不太可能会被回收,所以有此名称。

 

三、深入探讨

       方法区:事实上方法区保存了运行常量池、全局变量、静态变量以及类信息等等。也就是说静态变量static ,全局变量public static

       java栈:保存了局部基本变量(比如int类型等等)、局部变量的引用、中间操作数等等

 

四、jvm一些简单参数设置

     -xms    初始heap大小

     -xmx    最大heap大小

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值