mac os x下java启动研究

2022-04-05
1分钟阅读时长

java启动读取配置文件

mac下通过dtruss跟踪mvn的执行过程 mvn是一个shell脚本,需要通过which mvn找到具体路径,编辑,在最后执行的java命令的前后 分别增加 set -x 与 set+x

set -x
exec "$JAVACMD" \
  $MAVEN_OPTS \
  $MAVEN_DEBUG_OPTS \
  -classpath "${CLASSWORLDS_JAR}" \
  "-Dclassworlds.conf=${MAVEN_HOME}/bin/m2.conf" \
  "-Dmaven.home=${MAVEN_HOME}" \
  "-Dlibrary.jansi.path=${MAVEN_HOME}/lib/jansi-native" \
  "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${CLASSWORLDS_LAUNCHER} "$@"
set +x

java运行前置条件,java加载正确JVM以及参数,步骤是

  1. java -> JRE目录 -> 获取jvm类型(-XXaltjvm,-J等) -> 读取JVM.cfg参数 ->找到jvm(jvm.dylib) /Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home/jre/lib/jvm.cfg

  2. load jvm后 -> 解析启动虚拟机参数(指定系统内存、GC、线程等如xss,xmx,xms,gc参数)->if jar:META-INF/MANIFEST.MF文件指定的Main-Class的主类名 / if MainClass: LoadClass