第四章 走进jVM
2024-09-06 00:50:48
4.1字节码
java文件编译成字节码后由默认解释执行,热点代码编译执行。
方法调用到一定程度的时候,进行JIT编译成机器码执行,后面直接运行JIT编译结果(机器码)。
4.2类加载过程
加载链接初始化
加载:字节码进入内存
链接:验证(cafebabe等)、准备(类变量赋初始值)、解析(确保类与类之间引用正确)。
初始化:调用类构造器<clinit>方法,如果复制运算是通过其他类静态方法来执行的,那么会马上执行另外一个类,在虚拟机栈中执行完毕后返回值进行赋值。
双亲委派机制加载字节码:
1.询问是否加载过:AppClassLoader->ExtClassLoader->bootstClassLoader
2.顶部尝试开始加载:bootstClassLoader->ExtClassLoader->AppClassLoader
4.3内存布局
堆:
所有的对象都创建在此,字符串常量池也存放在这里。
-Xms256M -Xmx1024M 其中X表示JVM运行参数,ms是memory start的简称,mx是memory max的简称。
为了不扩容收缩影响性能,生产环境最好设置一样的大小。
新生代,老年代。
metaspace(元空间)
虚拟机栈
局部变量表、操作栈、动态链接、返回地址。
局部变量表中的数据到操作栈中进行操作,动态链接存放常量表中的方法,方法返回地址。
本地方法栈
JNI(Java Native Interface)调用。如System.currentTimeMills。对性能要求极高和特殊作用。
程序计数器:
cpu有时间片轮询执行,被打断,程序计数器就是记录当前执行的位置。
总结
4.4对象实例化
最新文章
- 最全面的常用正则表达式大全 zz
- phalcon: 当删除循环删除一组数据,需要判断影响的行affectedRows
- JS 获取地址栏三级域名(改进版)
- Linux中source是什么指令?
- BizTalk 2013R2 WCF-LOB Oracle Adapter安装配置/问题&;解决方法
- 20145227 《Java程序设计》第1周学习总结
- IAP 程序内购
- ABBYY FineReader 12 能够识别哪些文档语言
- android从资源文件中读取文件流显示
- UIResponder
- 函数buf_LRU_get_free_only
- HDU分类
- Layout( 布局)
- iOS 获取系统目录
- CentOS 6.5安装JDK、Tomcat、Mysql
- json:JSONObject包的具体使用(JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包)
- JavaScript &; Dom 之 基本语法
- c# ThreadPool 判断子线程全部执行完毕的四种方法
- ShaderLab学习总结
- django之创建第6-2个项目-过滤器列表