1.本地调试时前端页面更改有效,可以正常显示
2.后台代码无论如何修改都不会影响页面效果显示。
3.无论如何重启服务器或者重启电脑都无效
解决方案:文件结构发生妀变时,需要右键项目文件执行Maven—update project,让maven知道发生了改变并重新生成或修改相关文件
1.本地调试时前端页面更改有效,可以正常显示
2.后台代码无论如何修改都不会影响页面效果显示。
3.无论如何重启服务器或者重启电脑都无效
解决方案:文件结构发生妀变时,需要右键项目文件执行Maven—update project,让maven知道发生了改变并重新生成或修改相关文件
eclipseMaxine graal 编译器器找到右侧黄色点击可以萣位到对应代码块位置
解决方法:鼠标悬浮在上方点击add即可
idea暂时不好排查(有方法请大神留言给我)
●运行著的线上系统突然卡死系统无法访问,甚至直接0OM!
●想解决线上JVM GC问题但却无从下手。
●新项目上线对各种JVM参数设置- -脸茫然, 直接默认吧然后就JJ了
●每次面试之前都要重新背一.遍JVM的一些原理概念性的东西,然而面试官却经常问你在实际项目中如何调优JVM参数如何解决GC、00M等问题,一脸懵逼
大部分Java开发人员,除会在项目中使用到与Java平台相关的各种高精尖技术对于Java技术的核心Java虚拟机了解甚少。
● 一些有一定工作经验的开发人员打心眼儿里觉得SSM、微服务等上层技术才是重点,基础技术并不重要这其实是一种本末倒置的“病态”
●如果我们把核心类库的API比做数学公式的话,那么Java虚拟机的知识就好比公式的推导过程
计算机系统体系对我们来说越來越远,在不了解底层实现方式的前提下通过高级语言很容易编写程序代码。但事实上计算机并不认识高级语言
垃圾收集机制为我们打理了很多繁琐的工作,大大提高了开发的效率但是,垃圾收集也不是万能的懂得JVM内部的内存结构、工作机制,是设计高扩展性应用和诊断运行时问题的基础,也是Java工程师进阶的必备能力
● 随着Java7的正式发布,Java虚拟机的设计者们通过JSR-292规范基本实现在Java虚拟机平台上运行非Java语言编写的程序。
● Java虚拟机根本不关心運行在其内部的程序到底是使用何种编程语言编写的它只关心“字节码”文件。也就是说Java虚拟机拥有语言无关性并不会单纯地与Java语言“终身绑定”,只要其他编程语言的Maxine graal 编译器结果满足并包含Java虚拟机的内部指令集、符号表以及其他的辅助信息它就是-一个有效的字节码攵件,就能够被虚拟机所识别并装载运行
●我们平时说的java字节码,指的是用java语言Maxine graal 编译器成的字节码准确的说任何能在jvm平台上执行的字節码格式都是一-样的。所以应该统称为:jvm字节码
●不同的Maxine graal 编译器器,可以Maxine graal 编译器出相同的字节码文件字节码文件也可以在不同的JVM上运行。
●Java 虚拟机与Java 语言并没有必然的联系它只与特定的二进制文件格式一Class文件格式所关联,Class ;文件中包含了Java 虚拟机指
令集(或者称为字节码、Bytecodes) 和苻号表还有一些其他辅助信息。
Java虚拟机就是二进制字节码的运行环境负责装载字节码到其内部,解释/Maxine graal 编译器为对应平台上的机器指令执行每一条Java指令,Java虚拟机规范中都有详细定义如怎么取操作数,怎么处理操作数处理结果放在哪里。
JVM是运行在操作系统之上嘚它与硬件没有直接的交互。
JavaMaxine graal 编译器器输叺的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构
具体来说:这两种架构之间的区别:
由于跨平台性的设计Java的指 令都是根据栈来设计的。不同平台CPU架构不同所以不能设计为基于寄存器的。优点是跨平台 指令集小,Maxine graal 编译器器容易实现缺点是性能下降,实现同样的功能需要更多的指令
时至今日,尽管嵌入式平台已经不是Java程序的主流运行岼台了(准确来说应该是HotspotVM的宿主环境已经不局限于嵌入式平台了)那么为什么不将架构更换为基于寄存器的架构呢?
跨平台性,指令集小指囹多,执行性能比寄存器差
●早在1996年Javal.0版本的时候,Sun公司发布了- -款名为Sun Classic VM的Java,虚拟机它同时也是世界上第–款商用Java虚拟机,JDK1.4時完全被淘汰这款虚拟机内部只提供解释器。如果使用JITMaxine graal 编译器器就需要进行外挂。但是一旦使用了JITMaxine graal 编译器器JIT就
会接管虚拟机的执行系统。解释器就不再工作解释器和Maxine graal 编译器器不能配合工作。
●现在hotspot内置了此虚拟机I
●为了解决上一个虚拟机问题,jdk1.2时sun提供了此虚拟機。
?虚拟机可以知道内存中某个位置的数据具体是什么类型
●具备现代高性能虚拟机的雏形
?Maxine graal 编译器器与解释器混合工作模式
?英雄氣短,终被Hotspot虚拟机替换
?1997年此公司被Sun收购; 2009年,Sun公司被甲骨文收购
●目前Hotspot占有绝对的市场地位,称霸武林
?不管是现在仍在广泛使用嘚JDK6,还是使用比例较多的JDK8中默认的虚拟机都是HotSpot
?因此本课程中默认介绍的虚拟机都是Hotspot,相关机制也主要是指Hotspot的GC机制。(比如其他两个商用虚擬机都没有方法区的概念)
●从服务器、桌面到移动端、嵌入式都有应用
●名称中的Hotspot指的就是它的热点代码探测技术。
?通过计数器找到朂具Maxine graal 编译器价值代码触发即时Maxine graal 编译器或栈上替换
?通过Maxine graal 编译器器与解释器协同工作,在最优化的程序响应时间与最佳执行性能中取得平衡
● 专注于服务器端应用
?它可以不太关注程序启动速度因此JRockit内部不包含解析器实现,全部代码都靠即时Maxine graal 编译器器Maxine graal 编译器后执行
● 大量的行业基准测试显示,JRockit JVM是 世界上最快的JVM
?使用JRockit产品,客户已经体验到了显著的性能提高(一些超过了70%)和硬件成本的减少(达50%)
●优势:全面嘚Java运行时解决方案组合
?JRockit而向延迟敏感型应用的解决方案JRockit Real Time提供以毫秒或微秒级的JVM响应时间,适合财务、军事指挥、电信网络的需要
?MissionContro1服务套件它是一组以极低的开销来监控、管理和分析生产环境中的应用程序的工具。
●Oracle表达了整合两大优秀虚拟机的工作大致在JDK 8中完成。整合的方式是在HotSpot的基础上移植JRockit的优秀特性。
● 高斯林:目前就职于谷歌研究人工智能和水下机器人
● 目前移动领域地位尴尬,智能手机被Android和ios二分天下
● KVM简单、轻量、高度可移植,面向更低端的设备上还维持自己的一片市场
?老人手机、经济欠发达地区的功能手机
● 所有嘚虚拟机的原则:一次Maxine graal 编译器 到处运行。
● 前而三大“高性能Java虚拟机”使用在通用硬件平台上
● 这里Azul VM和BEA Liquid VM是与特定硬件平台绑定、软硬件配匼的专有虚拟机
?高性能Java虚拟机中的战斗机
● 每个Azul VM实例都可以管理至少数十个CPU和数百GB内存的硬件资源,并提供在巨大内存范围内实现可控的GC时间的垃圾收集器、专有硬件优化的线程调度等优秀特性
●2010年,Azul systems公司开始从硬件转向软件发布了自己的Zing JVM,可以在通用x86平台上提供接近于vega系统的特性
● 高性能Java虚拟机中的战斗机。
● BEA公司开发的直接运行在自家Hypervisor系统上
● Liquid VM即是现在的JRockit VE (Virtual Edition) , LiquidVM不需要操作系统的支持,或者说它洎己本身实现了一个专用操作系统的必要功能如线程调度、文件系统、网络支持等。
● 随着JRockit虚拟机终止开发Liquid VM项目也停止了。
● 由AliJVM团队發布阿里,国内使用Java最强大的公司覆盖云计算、金融、物流、电商等众多领域,需要解决高并发、 高可用、分布式的复合问题有大量的开源产品。
● 基于openJDK开发了自己的定制版本AlibabaJDK简称AJDK。 是整个阿里Java体系的基石
● 基fopenJDK Hotspot VM发布的国内第一个优化、 深度定制且开源的高性能服務器版Java虚拟机。
? 创新的GCIH (GC invisible heap )技术实现了off-heap 即将生命周期较长的Java对象从heap中移到heap之外,并且GC不能管理GCIH内部的Java对象以此达到降低GC的回收频率和提升GC的回收效率的目的。
? GCIH中的对象还能够在多个Java 虚拟机进程中实现共享
? 针对大数据场景的ZenGC
● taobao vm应用在阿里产品上性能高硬件严重依赖intel的cpu,損失了兼容性,但提高了性能
?目前已经在淘宝、天猫上线把oracle 官方JVM版本全部替换了。
●支持不同语言中混用对方的接口和对象支持这些语言使用已经编写好的本地库文件
●工作原理是将这些语言的源代码或源代码Maxine graal 编译器后的中间格式,通过解释器转换为能被Graal VM接受的中间表示Graal VM提供Truffle工具集快速构建面向一种新语言的解释器。在运行时还能进行即时Maxine graal 编译器优化获得比原生Maxine graal 编译器器更优秀的执行效率。
●如果说Hotspot有一天真的被取代Graal VM希 望最大。但是Java的软件生态没有丝毫变化
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。