java 代码的运行

19 篇文章 0 订阅
  • linux 下找不到或无法加载主类 Doo.class

  • 错误原因:java -veriosn 是可以看到如下内容

  • 这里写图片描述

  • 查看环境变量配置, cat etc/profile 才知道CLASSPATH配置错误,原来配置为:CLASSPATH = $$JAVA_HOME/lib/ 正确配置如下:CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

  • java 代码运行在虚拟机,以Hotspot为例:
  • java 程序编译成java字节码,由虚拟机把字节码编译成机器码执行,虚拟机可由硬件或者软件写成。
  • 一般都是软件,即包含在JRE下的java虚拟机。JRE代表java程序执行的环境。包含虚拟机和java提供的核心类库。
  • jdk包含jre和一些java工具,类库等等,比如常见的jps,jconsole 这些监控虚拟机的工具。
  • 那么java代码是如何运行在虚拟机?如何提高期执行效率的呢?
  • java虚拟机采用解释和即时编译的混合方式执行java代码,即将热代码采用即时编译器编译成机器码,其余的代码采用解释执行的方式,虚拟机采用双亲模式的类加载器将class类加载进入虚拟机内存,一般都是放在方法区。然后再线程启动后,线程会在栈区创建自己私有的局部变量,方法,对象的引用,栈区划分为PC寄存器,java方法栈,本地方法栈。
  • 对象在堆内创建,栈区值包含引用,全部变量,常量一般是放在方法区。线程保存局部变量时,统一采用相同的字节保存,除了double,long。
  • 常见的即时编译器为C1,C2,Graal.
  • java虚拟机采用对20%热代码的即时编译提高了执行效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值