「jvm」JVM面试题扩展:Java代码在JVM中的执行流程
文章图片
文章图片
【「jvm」JVM面试题扩展:Java代码在JVM中的执行流程】
代码示例:
- JVM向操作系统申请内存 , 根据内存大小找到具体的内存分配表 , 然后把内存段的起始地址和终止地址分配给JVM ,
- JVM获得内存空间后 , 根据JVM的参数配置设置堆、栈、方法区的内存大小
- Class文件进行加载、验证、准备(为类的静态变量分配内存 , 初始化为系统的初始值)以及解析
- 调用类的<init>方法(编译器会在java文件编译成class文件时收集所有类的初始化代码 , 包括惊天变量赋值 , 静态代码块 , 静态方法等)
- 执行方法(启动main线程 , 执行main方法 , People people = new People()会在堆内存中创建一个People对象 , 对象引用people存放在栈中) 。
- Test test = new Test()创建Test对象 , 调用静态方法toString , toString方法属于Test类 , 是从静态方法中获取的 , 放入栈中 , 通过栈中的peopel引用调用堆中的People对象 。
- 再调用sport非静态方法 , sprot方法是对象Test的方法 ,sprot方法进行入栈 , 并通过栈中的peopel引用调用堆中的People对象;
- 『spring』Java面试题:Spring如何解决的循环依赖
- Java:Java JVM常见面试题及答案:类加载器篇
- 「spring」Spring面试题:SpringBoot开发自定义starter
- 『Java』Java JVM常见面试题:JVM调优案例
- 「Java」Java面试题-遍历中从List中删除一个元素
- 『Java』失业2个月,面试屡败,宅家钻研半个月面试题,顺利拿offerJava岗
- 「jvm」Tomcat中JVM内存溢出及合理配置
- #Java#学透这份300页的2020最新java面试题及答案,让你成功定位阿里P8
- 「奔跑的长腿蟹」怎么保证自己获胜,网友秒答,腾讯面试题:100只弓箭你和对手共用
- 『程序员BUG』真实有效),SpringBoot项目优化和Jvm调优(亲测