后端知识库(八股文大全 没事的时候再看)_20230303012103.docx
需积分: 0 190 浏览量
更新于2023-03-03
收藏 21.71MB DOCX 举报
后端开发涉及众多知识领域,其中包括Java虚拟机(JVM)的相关概念。本文主要讨论JVM的对象创建过程、内存结构以及常量池。
1. JVM对象创建步骤:
- 类加载检查:在创建对象时,JVM会首先确保类已经被加载、解析和初始化。如果未加载,JVM会进行加载。
- 内存分配:根据对象大小在Java堆中划分内存。内存分配有两种策略:指针碰撞(内存规整)和空闲列表(内存不规整)。并发情况下,JVM可能使用CAS(Compare and Swap)算法或本地线程分配缓存(TLAB)来保证线程安全。
- 初始化零值:分配完内存后,所有字段会被初始化为0。
- 设置对象头:记录对象类型、哈希码、GC信息等。
- 执行<init>方法:初始化对象的成员变量,完成对象的实际构造。
2. JVM内存结构:
- 程序计数器:每个线程都有自己的计数器,记录当前执行的指令地址。
- 虚拟机栈:每个方法对应一个栈帧,存储局部变量、操作数、动态链接等。栈溢出会导致StackOverflowError。
- 本地方法栈:处理native方法,存储native方法相关的信息。
- 堆:所有线程共享,存放对象实例和数组,是垃圾回收的主要区域。
- 方法区:存储类信息,如Class、静态变量等。JDK 1.8后,方法区被元空间(Metaspace)取代。
3. JVM中的常量池:
- Class文件常量池:存在于.class文件中,包含编译时的常量信息。
- 运行时常量池:在运行时可动态添加常量,如String.intern()。
- 全局字符串常量池:JVM维护的字符串引用表,使用Hashtable实现,存储字符串实例的引用。
- 基本类型包装类对象常量池:Byte、Short等基本类型包装类实现了常量池技术,用于优化内存使用。
理解这些基础概念对于后端开发者来说至关重要,它们有助于优化代码性能,避免内存泄漏,以及正确处理并发问题。深入学习JVM的工作原理能够帮助开发者编写更高效、更稳定的代码。
weixin_55439782
- 粉丝: 0
- 资源: 1
最新资源
- 白色大气风格的农业培育企业网站模板下载.zip
- 白色大气风格的男人男士网站模板下载.zip
- 白色大气风格的女性风衣企业网站模板.zip
- 白色大气风格的欧美穿衣风格网站模板下载.zip
- 白色大气风格的欧美品牌服装网站模板下载.zip
- 白色大气风格的苹果ipad应用官网模板下载.zip
- 白色大气风格的欧美商务合作HTML模板.zip
- 白色大气风格的贫困儿童救助网站模板下载.zip
- 白色大气风格的葡萄酒酒庄模板下载.zip
- 白色大气风格的企业站通用整站网站源码下载.zip
- 白色大气风格的汽车4s店模板下载.zip
- 白色大气风格的全屏背景科技公司模板下载.zip
- 白色大气风格的前端设计案例展示模板.zip
- 白色大气风格的汽车爱好者模板下载.zip
- 白色大气风格的人体艺术摄影网站模板下载.zip
- 白色大气风格的软件开发公司企业整站模板下载.zip