范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Java是如何实现高性能的?

  今天,从欧洲到澳大利亚,乘坐澳航的直达航班大约需要16个小时--这在100年前需要一个多月的旅程。如今,速度就是一切,这一原则也适用于软件开发。在动态的本地和网络应用的存在下,没有用户会等待内容的加载。这给软件开发者带来了真正的挑战。那么,在开发高性能软件时,为什么要从几十种流行的选择中选择Java编程语言?在今天的文章中,我们将尝试回答这个问题。我们将重点讨论使Java成为低延迟和高吞吐量系统的完美选择的各个方面。内容Java虚拟机--Java性能的基础是什么使Java成为高性能系统的完美语言编译和解释平台独立JIT - 即时编译器多线程能力垃圾收集Java虚拟机--Java性能的基础
  Java性能的核心是Java虚拟机,简称JVM。
  JVM有两个主要功能:允许Java程序在任何操作系统或设备上运行(根据著名的 "写一次,在任何地方运行 "原则),并优化和主动管理程序内存。
  我们可以区分JVM的两个定义。
  1. Java虚拟机是软件程序执行其代码的运行环境。
  2. Java虚拟机是Java程序的运行方式。我们配置好设置,然后在执行过程中依靠JVM来管理程序资源。
  JVM中有很多元素,每一个元素都对软件的性能有着深刻的影响。我们可以区分出对性能有影响的JVM的三个不同组件,开发人员可以对它们进行调整。
  类加载器--当编译一个.java源文件时,它以.class文件的形式被转换为字节码。当你想在你的程序中使用这个类文件时,它必须由类加载器加载到主程序内存中。这个过程包括3个阶段,加载、链接和初始化,所有这些都对应用程序的性能有深刻的影响。
  运行时内存/数据区 - 由5个核心部分组成,它负责提供内存来存储字节码、参数、对象、返回值和局部变量。
  执行引擎 - 它负责执行每个类中存在的代码。然而,在执行程序之前,字节码本身需要被转换为JVM能够理解的指令。为了实现这一点,JVM可以使用解释器或JIT编译器,我们将在下面详细介绍。
  JVM是实现真正的Java性能的一个关键工具。有经验的开发者可以通过调整Java虚拟机的默认参数来微调它,以更好地满足应用程序的需求。这个过程可以包括调整堆的大小,并选择合适的垃圾收集器。
  作为一般的经验法则,在调整JVM时,你应该首先关注内存使用要求,然后是延迟,最后是应用程序的吞吐量。是什么让Java成为高性能系统的完美语言
  好了,我们已经确定JVM是实现Java性能的一个关键工具。那么,使Java成为构建高性能软件应用程序的完美编程语言的其他方面、特点和功能呢?
  这里有五个关键点。
  1.编译和解释
  编程语言通常可以是编译的(C、C++、Haskell、Erlang或Rust)或解释的(PHP、Python、Ruby和JavaScript)。
  在这方面,Java是一种万能的语言,因为它结合了编译语言的力量和解释语言的显著灵活性。
  正如我们之前在介绍Java虚拟机时提到的,Java编译器(javac)将java源代码编译成字节码,然后可以在所有装有JVM的机器上执行。
  这张图更好地展示了这个过程。
  2.平台的独立性
  JVM赋予了Java最大的优势--平台独立性。
  Java虚拟机几乎可以安装在所有可用的操作系统上,从Windows,到Mac和Linux。平台独立性允许在任何机器上编译和执行代码,并确保结果相同。
  在这种情况下,字节码是实现完全平台独立性的关键,也值得解释一下字节码到底是什么,因为我们在本文中已经提到过几次。
  Java字节码只是一个包含JVM指令的程序。它的工作原理类似于汇编器,是C++代码的一种表示。就其本身而言,它是一种二进制格式的代码,由常量、引用和数字代码组成,可由机器的硬件读取和执行。
  这里有一张图,解释了Java字节码是如何实现平台独立的。
  3.JIT - 及时编译器
  说到编译,这里是Java的另一张王牌--即时编译器(JIT)编译器)。将字节码转换为本地机器语言执行的方式对它的速度有很大影响。JIT编译器与Java虚拟机(JVM)互动,将Java字节码序列变成本地机器代码。
  重要的是,JIT编译器是按需编译代码的。这意味着,它只编译正在被调用的方法。这大大提高了整体效率,节省了时间。
  在使用JIT编译器时,计算机硬件能够直接执行本地代码,而不是让JVM一次又一次地解释同一序列的字节码。如果编译后的方法被频繁地执行,这可能会导致大量的性能提升。
  更重要的是,JIT编译器在编译为本地机器语言的同时,还能进行很多简单的优化。其中一些优化包括数据分析、从堆栈操作到寄存器操作的转换、通过寄存器分配减少内存访问,以及消除常见的子表达式。
  4.多线程能力
  Java是一种能够在语言层面上实现多线程的技术。多线程允许程序在多个计算核心和线程上执行并发的计算。更重要的是,多线程应用程序可以保持对输入的响应,即使是在执行长期运行的任务时。
  多线程现在比以往任何时候都更重要,特别是当硬件公司正在发布越来越强大的企业级CPU,如新披露的Zen 4 Epyc处理器,提供令人震惊的192个计算线程。
  区分多线程和多处理也很关键。第一个术语指的是在多个CPU线程上并发执行计算的能力。另一方面,后者指的是一个系统同时运行多个处理器的能力,其中每个处理器可以操作多个线程。
  一般来说,多线程是首选,因为CPU线程使用一个共享的内存区域,这有助于节省内存,并允许稍快的内容切换。
  5.垃圾收集
  最后但并非最不重要的是,我们必须涵盖Java的垃圾收集。简而言之,它是Java程序进行自动内存管理的过程。当Java程序在JVM上运行时,对象在堆上被创建,但最终,其中一些对象将不再被需要。
  垃圾收集器会自动检测这些未使用的对象并将其删除,在此过程中释放出宝贵的内存资源。
  在Java中执行垃圾收集过程有三个阶段。检查是否符合条件
  如果一个对象无法到达,就有资格进行垃圾收集(GC)。我们可以区分四种使Java对象符合垃圾收集条件的主要方式。
  重新分配指针变量Employee employeeOne = new Employee();
  Employee employeeTwo = new Employee();
  employeeOne = employeeTwo; // the first object referred by employeeOne is available for garbage collection
  删除指针变量Employee employee = new Employee();
  employee = null;
  使用匿名对象
  register(new Employee());
  隔离岛(一组相互引用的对象,但不被应用程序中的任何活动对象所引用)。请求JVM运行垃圾收集器
  请求JVM运行垃圾收集器可以通过两种主要方式设置。使用System.gc()方法 - System类包含静态方法gc(),用于请求JVM运行垃圾收集器。使用Runtime.getRuntime().gc()方法--Runtime类允许应用程序与运行该应用程序的JVM接口。通过使用其gc()方法,我们可以请求JVM运行GC。
  最终化
  在删除一个对象之前,垃圾收集器对该对象使用finalize()方法来执行最后的清理活动。一旦finalize()方法完成,Garbage Collector就会删除该对象。Java是如何实现高性能的 - 总结
  Java实现了高性能的软件开发,这是其他编程语言无法做到的。所有的开发人员都应该确保他们正在开发的Java程序能够充分发挥其能力,并正确利用这种奇妙的编程语言所提供的所有工具。

党的十八大以来我国数字社会服务更加普惠便捷视频加载中党的十八大以来,全国各地区各部门深入贯彻数字中国建设部署要求,扎实推进数字基础设施数字技术数字经济数字政府和数字社会建设,优化数字化发展环境,拓展数字领域国际合作,不断培观察丨服务湘随,税务放管服改革涵养为民温度编者按市场主体是经济发展的底气所在韧性所在!有数据显示今年前三季度,湖南省实有市场主体达629。91万户,同比增长20。02。如何精准回应市场主体的现实关切,激活营商环境一池春水,携手走出全球数字发展道路习主席倡议在六方面发力当前,数字技术加速创新,日益融入经济社会发展各领域全过程。11月9日,习近平主席向2022年世界互联网大会乌镇峰会致贺信时强调,中国愿同世界各国一道,携手走出一条数字资源共建共享数近几代iPhone没变化?业内人士设计师离职后团队更注重成本大家一定发现了,最近几代iPhone手机外观几乎没有变化,从2019年推出的iPhone11系列开始,每一代都在进行极其小幅的调整。现在有业内人士爆料,原因是当时的分析师离职,苹果最新通知!这四类考生拥有2023高校保送资格根据教育部近日公布的2023年普通高等学校部分特殊类型招生基本要求,根据教育部等有关部门规定,中学生学科奥林匹克竞赛国家集训队成员部分外国语中学推荐优秀学生公安英烈子女退役运动员等吉林某大学生吃杨国福一年,发现竟然是杨围福杨国福麻辣烫遭遇到了李鬼!前几日,吉林白城某男大学生,一如往常去吃食堂的麻辣烫。在窗口等待时,偶然才发现,他吃了一年的杨国福麻辣烫,其实是叫杨围福!捂脸捂脸食堂这家杨围福麻辣烫,之湖北一美女教师批改作业火了,评语很走心,获得家长一致好评有人说现在的教师教学压力比以前的教师更强,这是因为现在的教学模式更加规范,并且不少公立学校还设置了严苛的考核制度,所以教师必须不断提升自己的教学能力还有不断学习新的知识才能够适应时抄书第一天走过生命低谷!就算失去一切,我也要勇敢活下去今天是我决定抄书的第一天,是因为看到这本书,我正在人生低谷,我需要安静下来,让心启动暂停奔波键,我不想被逼上天堂,我要勇敢的走出阴暗的深谷。现实中,有很多人因为无法承受失去的巨大伤双语纪录片丨精准扶贫的力量楠木桥村九村抱团齐攻坚0000视频加载中编者按为深入学习贯彻落实党的二十大精神,进一步对外讲好首倡之地的精准扶贫故事,以小见大反映全国脱贫攻坚伟大成效,湖南省政府新闻办省网信办指导,省乡村振兴局省外事办世界上有两个我世界上有两个我世界上有两个我,一个浸透在尘俗的生活里用力谋生,一个偷偷躲起来用文字滋养灵魂。世界上有两个我,一个在工作中兢兢业业勤勤恳恳,一个在生活中肆意妄为洒脱随性。世界上有两个让世界感受你的善意我们其实不必付出多少,就可以把善意给到这个世界实际上我们碰到的每件事情都只是在提醒我们自己,我们将如何,我们可如何,我们应如何仅仅是这样,不干别人的事。当然,我们云云,们字也是多余
光伏硅料赛道异常拥挤吉利万吨项目投产,远期规划50万吨据襄阳发改委消息,吉利进军光伏全产业链的重头戏正在襄阳市谷城县加速推进。吉利硅谷副总经理王明哲日前介绍目前一期2000吨多晶硅中试线项目已顺利投产,二期10000吨多晶硅项目于20发展数字普惠金融助力乡村振兴党的二十大报告指出全面推进乡村振兴。完善农业支持保护制度,健全农村金融服务体系。数字普惠金融旨在帮助长期以来被传统金融服务忽视的小微企业农民困难人群等,通过数字化信息技术以低成本便今豫言丨把项目红利抓在手上于晴大年初七,兔年首个工作日,全省迎来了第七期三个一批项目建设活动,数千个项目集中签约开工投产。全力拼经济,奋战开门红,从项目现场钢筋水泥与机器设备的轰鸣交响中,就能一感中原经济跳48个项目签约落地徐州泉山,总投资219亿元现代快报讯(通讯员王媛记者张晓培)2月1日上午,在徐州云龙湖畔,2023泉山区春季招商投资推介会暨项目签约仪式成功举办,吹响项目建设集结号,按下经济发展快进键。会议现场高明摄当天活缓解焦虑抑郁最好的药2022年曾有一项研究显示,约有52的新冠感染者出现了睡眠障碍,部分地区甚至高达74。8。除了入睡困难外,容易醒醒了后睡不着多梦等等都是饱受困扰的失眠问题。为什么失眠问题如此难调理点进来,希望这几个原则可以拯救你的精神内耗,拒绝焦虑!熟练巧妙使用下面几个原则,你会很强大!来自微博不要对尚未开始的事情大惊小怪!已经决定的事情就不要抱怨!不要给自己正在做的事情泼冷水!已经结束的事情不要总是再想再后悔!一个人真正意义浙大丁平团队发现森林边缘缓冲了生境减小对传粉网络的负面影响2023年1月31日,浙江大学生命科学学院丁平团队在森林生境对传粉网络影响研究中取得重要进展,研究结果以Forestedgesincreasepollinatornetworkro哺乳动物社会组织与寿命有何关联?研究发现群居普遍比独居寿命长研究团队在中国野外对哺乳动物进行行为观察。朱平芬摄中新网北京2月1日电(记者孙自法)哺乳动物的社会组织与寿命之间有何关联?中国科学院动物研究所(中科院动物所)中科院动物生态与保护生怎么看一个医生,一个医生就让多喝水,喝水真有那么重要吗?大家有没有经历过这些情况肚子疼,咨询医生,医生让多喝热水感冒发烧,看医生,医生建议多休息多喝水身体有炎症,医生其中一条建议,也是平时要多喝水除此之外,关于喝水,我们还听到有人说早上男人到了中年,终于明白了,自己的父亲为什么选择沉默头号创作家三十而立,四十不惑,50知天命。30多岁也没挣到多少钱,40多岁还是感到迷茫,50多岁就只能选择认命了。当你慢慢的长大,面临生活中许多问题,无法解决的时候,你就开始慢慢的苹果获得新VR专利为头显佩戴者提供沉浸式流媒体体验来源IT之家2月1日消息,根据美国商标和专利局(USPTO)今天公示的清单,苹果公司获得了一项流媒体传输沉浸式视频内容的专利,为佩戴ARVR头显的用户提供卓越的流媒体体验。苹果在专