jvm 02-java对象访问模式
- java的引用类型是最为重要的数据处理模型
- 整个引用数据类型在数据处理之中会牵扯到:堆内存、栈内存、方法区。
- 整个引用操作流程
- 新定义的对象名称保存在本地变量表中
- 而后在这块区域里面需要确定要与之对应的栈内存空间
- 通过变量表中的栈地址可以找到堆内存
- 利用堆内存的对象进行本地方法的调用(方法区)
- 例如:Object obj = new Object() --实例化了一个Object类对象
- Object obj :该表达式既保持在栈内存之中,也保存了堆内存的引用。同时数据会保存在本地变量表中。
- new Object() :该表达式为一个真正的对象,该对象保存在堆内存之中。
引用数据类型的两种模式
通过句柄访问
通过直接指针访问(HotSpot虚拟机)
- 该模式没有句柄池的概念
- 在JVM中是直接利用对象保存模式,即直接保存具体的对象
- 该策略省略了句柄到对象间的查找,而后该对象直接进行java方法区的调用
获取当前JVM版本(java -version)
- mixed mode为混合模式,适合于编译和执行
localhost:~ $ java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode) localhost:~ $
纯解释模式启动(java -Xint -version)
localhost:~ $ java -Xint -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, interpreted mode) localhost:~ $
纯编译模式启动(java -Xcomp -version)
localhost:~ $ java -Xcomp -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, compiled mode) localhost:~ $
JVM的启动有两种模式
- -server:服务器模式,占用的内存大、启动速度慢,默认模式
- -client:本地单机运行程序模式,启动速度快
- 配置文件路径:..\Java\jdk1.8.0_131\jre\lib\amd64\jvm.cfg