Java-JVM(一)基础

文章介绍了Java的JVM基础,包括字节码的概念和分类,类加载器的生命周期及加载时机,以及内存模型中的栈、堆和非堆区域的详细说明。内容涵盖了从Java源代码编译成字节码的过程,到对象在内存中的分配和管理,以及不同类型的类加载器如何工作。
摘要由CSDN通过智能技术生成

Java-JVM(一)基础

目录

  1. 简介
  2. 字节码技术
  3. 类加载器
  4. 内存模型

1、简介

 1、Java-GC:内存管理 + 垃圾回收
 2、编程语言演变:机器语言-》汇编语言 -》高级语言
 3、字节码+类加载器+虚拟机内存:Java文件通过编译器成字节码文件,字节码文件通过虚拟机的类加载器加载到虚拟机内部,再转化成对象实例

2、字节码技术

 1、概念:由单字节的指令组成的操作码集
 2、分类:栈操作指令、程序流程控制指令、对象操作指令、算数运算以及类型转换指令
 3、生成/查看字节码指令
	1、编译:javac demo/jvm0104/HelloByteCode.java
	2、查看字节码:javap -c demo.jvm0104.HelloByteCode

3、类加载器

1、类的生命周期:加载class、校验、准备、解析、初始化、使用、卸载
2、类的加载时机:main、new、静态方法、静态字段、子类初始化父类、接口定义default、反射类调用、MethodHandle
3、不会初始化(可能会加载):子类引用父类的静态字段、对象数组、常量所在的类、类名获取class对象、Class.forname参数、Classloader的loadClass方法
4、三类加载器:启动、扩展、应用

4、内存模型

1、Stack栈:线程与方法线程栈
	1、特点
		1、栈访问范围:只能访问自己内部
		2、栈之间沟通:变量副本沟通
	2、原生类型存于栈
		1、引用地址存于栈,实际对象存于堆
		2、方法栈:每启动一个线程就会产生一个方法栈,每一个方法就是一个栈帧,保存在栈里面
2、heap堆-共享堆
	1、特点
		1、保存所有对象
		2、对象的成员变量、对象引用都存于堆
		3、类的静态变量、类定义存于堆
	2、分区:年轻代(E、S1、S2)、老年代
3、Non-Heap 非堆
	1、特点:属于堆,但是不归GC管理
	2、持久代(常量池、方法区)、CCS、JIT

堆内存结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值