Java程序的运行过程
1.编译java文件
使用javac编译java源文件,生产二进制的字节码文件
2.运行
使用java运行字节码文件
程序运行时会被加载到内存,由于java程序是运行在jvm之上的,字节码文件会被加载到jvm内存中
Jvm内存划分
内存划分是为了提高运行效率,给jvm内存划分了不同的区域,每一块区域有不同的处理方式以及数据管理方式
- 寄存器
- 给cpu用的,和开发关系不太大
- 本地方法栈
- jvm在使用操作系统相关功能的时候使用,和开发关系不大
- 方法区
- 存储的程序运行时所需要的所有的class文件
- 堆内存
- new出来的数据都存储在堆内存中
- 堆内存中的数据都有个地址
- 在地址区域内的数据都有默认值
- 当堆内存的数据没有任何指向,GC垃圾回收器回收,但不会立即清理,通常在系统清闲的时候清理
- 栈内存
- 存储正在运行的方法
- 栈的存储特点是先进后出
jdk6.0 方法区,堆内存,栈内存是独立存在的
jdk1.8 方法区在堆内存的内部