JVM执行引擎:
方法的字节码是由java虚拟机的指令序列构成,每条指令都包含单字节的操作码,及一个或者多个操作数。执行引擎每执行一条指令时。先取得操作码,如果操作码有操作数
取得它的操作数。它执行操作码及跟随的操作数规定的动作。然后再取得下一个操作码。这个执行字节码的过程在线程完成前将一直持续。通过从它的初始方法返回,或者没有
捕获抛出的异常都可以标志着线程的完成
关注点:
请求本地方法调用的指令,虚拟机负责试着发起本地方法调用。如果本地方法里面有有再次调用java对象。则垃圾回收的时候则不会回收被本地方法调用的java对象。
字节码执行技术: 解释,即时编译,自适应优化,芯片级直接执行。最有意义也是最快速的是自适应优化,也就是说,不管什么时候调用方法。总是执行本地代码。自适应
优化器搜集那些只在运行才有效的信息。试图以某种方式把字节码解释和编译成本地代码结合起来。以得到最优化的性能。自适应优化的虚拟机开始的时候对所有的代码都是解释
运行。但会监视代码的执行情况:大多数程序花费80-90%的时间用来执行10-20%的代码。或者判断某个特定的方法是瓶颈的时候。会启动一个后台线程把字节码编译成本地代码
非常仔细地优化这些本地代码。同时程序仍然通过解释来执行字节码。并且只编译和优化那些 “热区”(10-20%代码) 虚拟机可以比传统的即时编译更注重优化性能.
Java比C++更加面向对象,你可以测量它,可以发现方法启用的频度。动态派发的频度。这些Java程序的运行时特征,就是方法调用和动态派发的高频度发生。首先。每次动态
派发都会产生相关的管理费用。其次,更重要的是方法调用降低了编译器优化的有效性。 优化器在不同的方法里面不能够有效地工作,因此优化器在方法调用的时候就无法专注于代码
。方法调用频度越高,方法调用之间可以用来优化的代码代码就越少。优化器就变得越低效。解决这个问题的办法就是内嵌。把被调用方法的方法体直接拷贝到发起调用的方法中
。内嵌消除方法调用。带来的代码是需要更多的运行时内存。 在面向对象的语言中实现内嵌要比非面向对象的语言更加困难。因为面向对象语言使用了动态派发。在Java中比
C++更加严重。因为java的方法调用和动态派发频度要比C++高得多。一个C程序的标准优化表态编译器可以直接使用内嵌。因为每个函数都有一个函数实现。对于面向对象语言来说
。内嵌就变得复杂了。因为动态方法派发意味着函数调用可能有多个函数实现。换句话说。虚拟机运行时根据方法调用的对象类,可能会有很多个不同的方法实现可供选择。
内嵌一个动态派发的方法调用。一种解决方法就是把所有可能在运行被选择的方法实现都内嵌进去。这种思路的问题在于。如果有多个方法实现。就会让优化后的代码变得非常大
自适应编译比表态编译的优化就在于,因为它是在运行的工作,可以使用静态编译器所无法得到的信息。比如说,对于珍上特定的方法调用。就算有30个可能的方法实现。运行可能只会有其中的两个被调用
。自适应就可以只把这两个方法内嵌。有效减少优化后的代码大小。
Java线程:
Java程序不同的线程可以在不同的处理器上并行工作,。折中之一就是优先级考虑最小公分母问题。Java线程可以运行于10个优先级中的任何一个.
每个线程都有一个工作内存,线程用它保存所使用和赋值的变量的“工作拷贝”。局部变量和参数,因为它们是每个线程私有的。可以从逻辑上看成是工作内存或者主存的一部分
Java虚拟机规范定义了许多规则,用来管理线程和主存之间的低层次交互行为。比如。一条规则声明:所有对基本类型的操作,除了某些对long类型和double类型的操作之外
,都必须是原子级的。两个线程竞争,对于一个int变量定了不同的两个值,就算不存在同步,变量也会采用二都之一。但对于任何没有声明为volatile的long或者double变量
某些实现可能把它们作为两个原子性的32位值对待.而非一个原子性的64位值。这样对于log或者double的非原子操作可能导致两个竞争性的线程在试图写入不同的值到一个long或者double变量的时候。
最终得到的是一个不正确的结果。
1.把变量的值从主存拷贝到它的工作内存
2。把值从它的工作内存写回到主存
Java Class文件
一个class文件符合以下格式
minor_version
major_version
constant_pool_count
constant_pool
access_flags
fields_count
fields
methods_count
methods
attributes_count
attributes
class
classdescriptor
property
propertydescriptor
类型的生命周期:
Java虚拟机实现必须在每个类或接口首次主动使用时初始化
当创建某个类的新实例(或者通过在字节码中执行new指令,或者通过不明确的创建,反射,克隆或反序列化
当调用某个类的静态方法时(即在字节码中执行invokestatic指令时)
当使用某个类或者接口的静态字段,或者对该字段赋值时.用final修饰的静态字段除外。它被初始化为一个编译时的常量表达式
当调用Java API中的某些反射方法时,比如类class的方法或者java.lang.reflect 包中类的方法
当初始化某个类的子类时(对于接口除外,只有在某个接口所声明的非常量字段被使用时,该接口才会被初始化,而不会因为实现这个接口的子接口
或类要初始化而被初始化
当虚拟机启动时某个被标识为启动类的类(即含有main()方法的那个类)
除了以上六种,其他都是动调用。不会引发初始化
分享到:
相关推荐
基于Php语言设计并实现了微信小程序的社区门诊管理系统。该小程序基于B/S即所谓浏览器/服务器模式,选择MySQL作为后台数据库去开发并实现一个以微信小程序的社区门诊为核心的系统以及对系统的简易介绍。 用户注册,在用户注册页面通过填写账号、密码、确认密码、姓名、性别、手机、等信息进行注册操作; 用户登录,用户通过登录页面输入账号和密码,并点击登录进行小程序登录操作。 用户登陆微信端后,可以对首页、门诊信息、我的等功能进行详细操作 门诊信息,在门诊信息页面可以查看科室名称、科室类型、医生编号、医生姓名、 职称、坐诊时间、科室图片、点击次数、科室介绍等信息进行预约挂号操作 检查信息,在检查信息页面可以查看检查项目、检查地点、检查时间、检查费用、账号、姓名、医生编号、医生姓名、是否支付、审核回复、审核状态等信息进行支付操作
白色大气风格的设计师作品模板下载.zip
工程经济学自考必备软件下载
UML课程设计报告.doc
白色大气风格响应式彩绘精品水果网站模板.zip
白色简洁风格的别墅整站网站模板.zip
白色简洁风格的APP展示动态源码下载.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;
白色大气风格的雪山旅游景区CSS3网站模板.zip
介绍 基于python开发的大模型调用基础框架(源码) 使用说明 修改配置文件 cd config vim __init__.py # 在配置文件中添加大模型调用地址,模型名称,API_KEY等配置 启动应用 应用启动分为两种模式,命令行模式和web模式 命令行模式 python main.py cli web模式 python main.py api
基于JavaWeb的小区物业管理系统源代码+数据库 负责数据库的设计和界面的设计和实现; 界面使用 BootStrap 框架,页面自适应效果,修改页面后实现各个功能模块的布局; 负责实现用户登录注册,查看小区活动公告、水电费查询、车费查询信息; 采用的技术:采用 MVC 架构,数据库用 MySql;
白色简单风格的商务企业网站模板下载.zip
1. 平台在家电和电子产品方面的营运情况如何? 2. 哪些品牌和类别销量最高? 3. 用户消费规律 4. 哪些是我们的重点用户? 5. 平台有哪些优势和不足,需要如何改进?
全平台数据库管理工具, 支持 ClickHouse, Presto, Trino, MySQL, PostgreSQL, Apache Druid, ElasticSearch...
白色大气风格的旅游整站网站模板.zip
1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用KEIL 标准库开发,当前在STM32F030C8T6运行,如果是STM32F030其他型号芯片,依然适用,请自行更改KEIL芯片型号以及FLASH容量即可。 3、软件下载时,请注意keil选择项是jlink还是stlink。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、编译时请注意提示,请选择合适的编译器版本。
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
白色大气风格的红唇少女女性类网站模板.zip
白色简洁风格的UIDesign设计公司企业网站模板.rar
Linux期末考试试题.doc