JVM性能调优
**java跨平台特性:**由于java虚拟机JVM会在软件层面屏蔽不同操作系统在底层硬件和指令上的不同。(下载安装JDK时,会选择不同系统版本,分不同系统的原因就是JVM对不同操作系统的实现不一样)
JVM组成
由三大块组成:
类转载子系统---->运行时数据区(JVM中的一大块内存)---->字节码执行引擎
当java中的class文件开始执行时,JVM就开始工作。最大的一块区域就是内存区域,虚拟机调优也就是对运行时数据区的调优。
栈(线程)
只要一个线程被运行,java虚拟机就会为这个线程分配一个专属的空间,这个空间用于存放这个线程中的局部变量。
栈帧内存空间
当没运行一个线程中的方法时,虚拟机会从该线程所分配的空间中分配出一块空间用于存储该方法中的局部变量。线程栈为每个方法分配空间的顺序符合数据栈的逻辑(先进后出),也就是后执行的方法所分配的空间要先被回收,先执行的方法所分配的空间更后被回收
线程栈中的方法块内存(栈帧)的组成
局部变量表、操作数栈、动态链接、方法出口
操作数栈:存储的就是一些数字数据,就是一个数据栈,对数据的临时存储,对数据的操作,都需要将数据存放到这个操作数栈中去。比如两个数相乘,首先会将相乘的两个数据常量放进操作数栈,然后执行乘法指令,乘法指令会从操作数栈的顶部取出最上面的两个数做乘法运算,再将计算的结果压入操作数栈。
局部变量表:就是存放该方法中定义的一些变量,java中定义一个变量,将要赋值的数据(一个常量)