1.jvm定义:java程序的运行环境
2.好处
- 一次编写 处处运行
- 自动内存管理,垃圾回收功能
- 数组下标越界检查
- 多态
3.jvm jre jdk的区别
4.学习路线
5.内存结构
- 程序计数器
- 虚拟机栈
- 本地方法栈
- 堆
- 方法区
6.程序计数器的作用、特点
记住下一条jvm指令执行的地址
*特点线程私有的,且不会存在内存溢出
7.虚拟机栈的定义及特点
- 每个线程运行时所需的内存,称为虚拟机栈
- 每个栈由多个栈帧组成,对应着每次方法调用时所占用的内存
- 每个线程只能由一个活动栈帧,对应着当前正在执行的那个方法
8、堆的定义及特点
定义:通过new关键字,创建对象都会使用到堆内存
特点:
- 它是线程共享的,堆中对象都需要考虑线程安全的问题
- 有垃圾回收机制
9、方法区的定义
在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。
10、运行时常量池
- 常量池,就是一张表,虚拟机指令根据这行常量表找到要执行的类名、方法名、参数类型、字面量等信息
- 运行时常量池,常量池是*.class文件中的,它的常量池信息就会放到运行时常量池,并把里面的符号地址变为真实地址
11、StringTable(串池)的特性
- 常量池中的字符串仅是符号,第一次用到时才变为对象
- 利用串池的机制,才能避免重复创建字符串对象
- 字符串常量拼接的原理是StringBuilder
- 字符串常量拼接的原理是编译期优化
- 可以使用intern方法,主动将串池中还没有的字符串对象放入串池中(1.8中将这个字符串对象尝试放入串池,如果有则并不会放入,如果没有则放回串池,会把串池中的对象返回)
12、直接内存(操作系统内存)
定义:
-
常见于NIO操作时,用于数据缓冲区
-
分配回收成本较高,但读写性能高
-
不受jvm内存回收管理
***帅气的远远啊***