配置JVM装载环境
- JVM.dll文件的查找
1 | 1、通过JRE的路径找到JVM.cfg |
- JVM.dll文件装载
1 | 1、LoadLirbary方法装载JVM.dll动态l连接库 |
JVM参数解析(JavaVMOption)
参数处理
1 | 1、-Xmn:设置新生代的大小NewSize和MaxNewSize |
参数验证
设置线程栈的大小
1
2
3
4
5-Xss 线程栈启动参数
每个线程分配的内存大小,默认JDK1.4中是256K,JDK1.5+中是1M
如果启动参数未设置-Xss,即threadStackSize为0,则调用InvocationFunctions的GetDefaultJavaVMInitArgs方法获取JavaVM的初始化参数,即调用JVM.dll函数JNI_GetDefaultJavaVMInitArgs,定义在share\vm\prims\jni.cpp
ThreadStackSize定义在globals.hpp中,根据当前系统类型,加载对应的配置文件,所以在不同的系统中,ThreadStackSize的默认值也不同。执行main方法
线程栈大小确定后,通过ContinueInNewThread方法创建新线程,并执行JavaMain函数,JavaMain函数的大概流程如下
1、新建JVM实例
2、加载主类的class
1 | 分jar和class方式加载 |