JVM启动流程:
1、java+xxx启动虚拟机
2、jvm查找虚拟机的配置jvm.config
3、根据配置找到jvm.dll,jvm.dll为jvm的主要实现
4、初始化获得JNIEnv接口,finClass等通过它实现。
5、找到main方法并执行。
jvm内存空间分为:
方法区、java堆,java栈,本地方法栈,PC寄存器。
如下图:
Java 内存模型:
java内存模型称为jmm,是一种java虚拟机保证数据一致性的规范,为了解决多线程通过共享内存通信导致的数据不一致的问题。
jmm规定了所有的变量都保存在主内存中,每个线程有自己的本地内存,本地内存保存着局部变量和葱主内存中拷贝的副本。线程不能直接操作主内存,只能操作本地内存中的副本,然后同步到主内存中。线程之间需要通信的话需要先更改本地内存副本,然后同步到主内存中,然后另一个线程从主内存中读取数据。