社区
Java SE
帖子详情
java是边解释边执行还是一次性解释然后执行
笨小鸟
2012-10-12 09:14:12
两个问题
1.java是边解释边执行还是一次性解释然后执行?
2.如果是边解释边执行那么是不是每次运行到相同函数又会重新解释?会自动缓存吗?
请明白的大侠告知小弟。
...全文
557
10
打赏
收藏
java是边解释边执行还是一次性解释然后执行
两个问题 1.java是边解释边执行还是一次性解释然后执行? 2.如果是边解释边执行那么是不是每次运行到相同函数又会重新解释?会自动缓存吗? 请明白的大侠告知小弟。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
JavaNet的牛肉粉丝
2012-10-12
打赏
举报
回复
运行字节码的工作是由解释器来完成的。解释器执行过程分3步执行:代码载入、代码校验和代码执行。代码载入由“类装载器”(class loader)完成。class loader负责装载运行一个程序所需要的所有代码,包括程序代码中的类所继承的类和被其调用的类。当 class loader装载一个类时,该类被放在自己的名字空间中。除了通过符号引用自己名字空间以外的类,类之间没有其他办法可以影响其他类。
随后,被装入的代码由字节码校验器进行检查。校验器可发现操作数栈益处、非法数据类型转化等多种错误。通过校验后,代码便开始执行了。
Java 字节码执行有两种方式:
(1). 即时编译方式:解释器先将字节码编译成机器码,然后执行该机器码。
(2). 解释执行方式:解释器通过每次解释并执行一小段代码来完成java字节码程序所有的操作。
通常采用第二种方法。
龙四
2012-10-12
打赏
举报
回复
就hotspot虚拟机而言,有两种模式,一是
-client
,二是
-server
-client模式下,是逐条解释执行的
-server模式下,先解释执行,然后jvm统计执行热点,将这些热点代码仔细优化编译成本地代码,然后执行本地代码,当这个热点不再是热点的时候,释放编译的代码,重新解释执行
其它的jvm可能在一启动的时候就全部编译成本地代码
诸如此类,没有强制规定,jvm实现者想怎么做都可以,只要不改变java相关的语义
小傅哥
2012-10-12
打赏
举报
回复
javascript是解释性语言
读一条 执行一条
杀手
2012-10-12
打赏
举报
回复
一次性解释然后执行
gefei0001
2012-10-12
打赏
举报
回复
编译执行。java会有.java .class两种文件,一个是源,一个是编译后的。所以是一次性编译执行。
解释执行的语言,不会生成中间文件,源文件即可执行。
0轰隆隆0
2012-10-12
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
引用 7 楼 的回复:
如果是边解释边执行那么是不是每次运行到相同函数又会重新解释?会自动缓存吗?
会做些偷懒的工作,比如检测到一直重复调用某个函数,直接编译成本地码
[/Quote]
JVM会自行优化!
hheeyyii
2012-10-12
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
如果是边解释边执行那么是不是每次运行到相同函数又会重新解释?会自动缓存吗?
[/Quote]
会做些偷懒的工作,比如检测到一直重复调用某个函数,直接编译成本地码
笨小鸟
2012-10-12
打赏
举报
回复
如果是边解释边执行那么是不是每次运行到相同函数又会重新解释?会自动缓存吗?
0轰隆隆0
2012-10-12
打赏
举报
回复
java很特殊,java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后用解释方式执行字节码。Java既可以被编译,也可以被解释。通过编译器,可以把Java程序翻译成一种中间代码 - 称为字节码 - 可以被Java解释器解释的独立于平台的代码。通过解释器,每条Java字节指令被分析,然后在计算机上运行。只需编译一次,程序运行时解释执行。
hheeyyii
2012-10-12
打赏
举报
回复
对于hotspot
1.可以是存解释性的。
2.可以是通过热点来编译成本地码
3.存本地码
如果你在windows下,默认是第一种。linux默认是第二种。
Java
的
解释
执行
是先全部
解释
完后再
执行
还是边
解释
边
执行
从而实现了“一次编译、到处
执行
”的跨平台特性。
Java
语言是
解释
型的。如前所述,
Java
程序在
Java
平台上被编译为字节码格式,然后可以在实现这个
Java
平台的任何系统中运行。在运行时,
Java
平台中的
Java
解释
器对这些...
Java
是
解释
执行
还是编译
执行
的?
目录1、
解释
执行
和编译
执行
的区别1.1、
解释
执行
1.2、编译
执行
2、
Java
是
解释
执行
还是编译
执行
?2.1、
解释
器和编译器2.2、何时编译?2.2.1、热点探测 1、
解释
执行
和编译
执行
的区别
Java
代码要想放到JVM里去运行,首先...
Java
的
解释
执行
是先全部
解释
完后再
执行
还是边
解释
边
执行
?
从而实现了“一次编译、到处
执行
”的跨平台特性。
Java
语言是
解释
型的。如前所述,
Java
程序在
Java
平台上被编译为字节码格式,然后可以在实现这个
Java
平台的任何系统中运行。在运行时,
Java
平台中的
Java
解释
器对这些...
【
Java
核心技术卷】
Java
的
解释
执行
与编译
执行
一、编译
执行
和
解释
执行
的一些基本概念: JVM:一种能够运行
Java
字节码(
Java
bytecode)的虚拟机。(下面有更具体的JVM的内容) 字节码:字节码是已经经过编译(.class文件),但与特定机器码无关,需要
解释
器...
java
是
解释
执行
还是先编译后
执行
?
java
是
解释
执行
还是先编译后
执行
?
java
-version的输出;Hotspot虚拟机的两种模式:server模式和client模式;
java
解释
器和编译器共存;JIT即时编译器
Java SE
62,616
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章