jvm 是由 类加载子系统 、 java堆 、 方法区 、 java栈 、 内存 、 pc寄存器 、 本地方法栈 、 垃圾回收系统 、 执行引擎 。
- 类的加载放的是系统或者是网络中加载的class信息,类加载的信息存在在地方叫方法区的内存空间, 除了类的信息外, 还放着有运行时的常量信息。
- java中的堆 是放java对象的实例,堆空间是所有线程共享的,垃圾回收系统是java虚拟机的重要组成部分,垃圾回收器可以对方法区、java堆和直接内存进行回收
- Java中的栈:每一个java虚拟机线程都有一个私有的java栈,一个线程的java栈在线程创建的时候被创建,java栈中保存着帧信息,java栈中保存着局部变量、方法参数,同时和java方法的调用、返回密切相关。
- String在堆和栈属于:基本类型的变量数据和对象的引用都是放在栈里面的,对象本身放在堆里面,显式的String常量放在常量池,String对象放在堆中。
代码在JVM会做什么:
第一步: 编译成字节码文件
jdk 1.8 递增算法 标记算法
内存中的 推 有新生代 和老年代 元空间
新生代 : 是采用的复制回收算法