Java程序的运行过程

1.编译java文件
使用javac编译java源文件,生产二进制的字节码文件
2.运行
使用java运行字节码文件
程序运行时会被加载到内存,由于java程序是运行在jvm之上的,字节码文件会被加载到jvm内存中

Jvm内存划分

内存划分是为了提高运行效率,给jvm内存划分了不同的区域,每一块区域有不同的处理方式以及数据管理方式

  • 寄存器
    • 给cpu用的,和开发关系不太大
  • 本地方法栈
    • jvm在使用操作系统相关功能的时候使用,和开发关系不大
  • 方法区
    • 存储的程序运行时所需要的所有的class文件
  • 堆内存
    • new出来的数据都存储在堆内存中
    • 堆内存中的数据都有个地址
    • 在地址区域内的数据都有默认值
    • 当堆内存的数据没有任何指向,GC垃圾回收器回收,但不会立即清理,通常在系统清闲的时候清理
  • 栈内存
    • 存储正在运行的方法
    • 栈的存储特点是先进后出

jdk6.0 方法区,堆内存,栈内存是独立存在的
jdk1.8 方法区在堆内存的内部