对自己学习的重点做一个笔记,方便回想
- class文件:由java编译器生成,来源->.java文件。
- 类加载子系统:classloader,负责向内存空间加载class文件的二进制信息。
- 内存空间:负责存储class文件的二进制信息。
- 栈:存储基本类型和对象的引用,超出作用域后会被JVM自动释放
- 堆:存储实例对象或数组
- 方法:类型信息、类静态变量、常量
- 本地方法栈:调用本地方法时使用,存储本地方法的局部变量表、本地方法的操作数栈等信息
- 程序计数器:为每条线程创建一个独立的程序计数器。(执行Java方法为JVM字节码指令地址,执行本地方法值为Underfined)【唯一一个在JVM规范中没有规定OOM的区域】
- 执行引擎:输入Java字节码、解析字节码、输出执行结果。
- 本地方法接口(JNI):提供若干API实现Java和其他语言的通信。(不需要时没用)
- JVM GC:回收堆和方法区域的对象。
· 对象没有引用
· 作用域发生未捕获异常
· 程序在作用域正常执行完毕
· 程序执行了System.exit()
· 程序发生意外终止(被杀线程等)
== 和 equals():
new出来的对象用equals(),因为地址变了。
常量和基本类型用==,因为引用指向同一个对象。