当前位置:首页 > Java > Java虚拟机pdf电子书下载
《Java虚拟机精讲》电子书封面

Java虚拟机精讲

  • 发布时间:2020年10月27日 14:49:01
  • 作者:高翔龙
  • 大小:75 MB
  • 类别:Java虚拟机电子书
  • 格式:PDF
  • 版本:超清版
  • 评分:9.3

    Java虚拟机精讲 PDF 超清版

      给大家带来的一篇关于Java虚拟机相关的电子书资源,介绍了关于Java虚拟机、Java方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小75 MB,高翔龙编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:9.1分

      Tags:java Java虚拟机 

      内容介绍

      HotSpotVM是目前市场上高性能JVM的代表作之一。它采用了解释器+JIT编译器的混合执行引擎,使得Ja程序的执行性能有了质的飞跃。这本书用极其简洁的句子解释了HotSpotVM的各个方面。比如:字节码的编译原理,字节码的内部组成结构,HotSpotVM由源代码启动的过程和初始化过程,Ja虚拟机的运行时内存,垃圾收集算法,垃圾收集器(重点是Serial收集器,ParNew收集器,Parallel收集器,CMS(Concurrent-Mark-Sweep)收集器和G1(Different-First)收集器),类加载机制,基于HotSpotVM栈的架构模型和执行引擎(解释器工作流,JIT编译器工作流,分层编译策略,热点检测功能)。

      目录

      • 第1章 Ja体系结构
      • 1.1 认识Ja
      • 1.1.1 与生俱来的优点
      • 1.1.2 语法结构和对象模型
      • 1.1.3 历史版本追溯
      • 1.2 Ja重要概念
      • 1.2.1 Ja编程语言
      • 1.2.2 字节码
      • 1.2.3 JaAPI。
      • 1.2.4 Ja虚拟机
      • 1.3 安装与配置Ja运行环境
      • 1.3.1 Windows环境下的安装与配置
      • 1.3.2 Linux环境下的安装与配置
      • 1.3.3 编写Ja程序
      • 1.3.4 编译与运行
      • 1.3.5 关键字与标示符
      • 1.4 Ja技术的新特性
      • 1.4.1 Ja模块化与OSGi技术
      • 1.4.2 语言无关性
      • 1.4.3 使用Fork/Join框架实现多核并行
      • 1.4.4 丰富的语法特性
      • 1.4.5 过渡到64位虚拟机
      • 1.5 实战:玩转OpenK
      • 1.5.1 K与OpenK的关系
      • 1.5.2 基于OpenK深度定制的
      • *JVM(TaobaoVM)
      • 1.5.3 下载OpenK源代码
      • 1.5.4 构建编译环境
      • 1.5.5 执行整个OpenK的编译
      • 1.5.6 执行单独HotSpot的编译
      • 1.5.7 导致编译失败的一些疑难杂症
      • 1.5.8 使用GDB工具Debug HotSpot
      • 1.6 本章小结
      • 第2章 字节码的编译原理
      • 2.1 jac编译器简介
      • 2.1.1 jac与Eclipse Compiler for Ja编译器
      • 2.1.2 jac的使用与标准选项配置
      • 2.1.3 编译原理
      • 2.1.4 下载jac编译器源码
      • 2.1.5 调用pile方法执行编译
      • 2.2&...

      读书笔记

      Java虚拟机JVM之server模式与client模式的区别

      JVM client模式和Server模式区别

      JVM Server模式与client模式启动,最主要的差别在于:-Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升。

      Java虚拟机JVM之server模式与client模式的区别

      JVM工作在Server模式下可以大大提高性能,Server模式下应用的启动速度会比client模式慢大概10%,但运行速度比Client VM要快至少有10倍

      Java虚拟机JVM之server模式与client模式的区别

      Java虚拟机JVM之server模式与client模式的区别

      当不指定运行模式参数时,虚拟机启动检测主机是否为服务器,如果是,则以Server模式启动,否则以client模式启动,J2SE5.0检测的根据是至少2个CPU和最低2GB内存

      由于服务器的CPU、内存和硬盘都比客户端机器强大,所以程序部署后,都应该以server模式启动,获取较好的性能;
      JVM在client模式默认-Xms是1M,-Xmx是64M;JVM在Server模式默认-Xms是128M,-Xmx是1024M;
      server:启动慢,编译更完全,编译器是自适应编译器,效率高,针对服务端应用优化,在服务器环境中最大化程序执行速度而设计。
      client:快速启动,内存占用少,编译快,针对桌面应用程序优化,为在客户端环境中减少启动时间而优化;

      当JVM用于启动GUI界面的交互应用时适合于使用client模式,当JVM用于运行服务器后台程序时建议用Server模式。

      我们可以通过运行:java -version来查看jvm默认工作在什么模式。

       

      关于图一中的GCC

      clien模式下,新生代选择的是串行gc,旧生代选择的是串行gc
      server模式下,新生代选择的是并行回收gc,旧生代选择的是并行gc
      一般来说我们系统应用选择有两种方式:吞吐量优先和暂停时间优先,对于吞吐量优先的采用server默认的并行gc方式,对于暂停时间优先的选用并发gc(CMS)方式。

      其它延伸知识点

      JDK有两种VM,VM客户端,VM服务器应用程序。这两种解决方案分享java运行环境的热点代码库,但使用不同的编译器,适用于客户机和服务器的独特的性能特点,这些差异包括编写内联政策和堆的默认值。

      虽然服务器和客户端虚拟机类似,服务器VM已专门调整最大峰值操作速度。它的目的是执行长时间运行的服务器应用程序,它需要最快的运行速度超过一个快速启动时间或较小的运行时内存占用。

      客户VM编译器是经典的虚拟机和实时升级(JIT)通过JDK的先前版本使用的编译器。客户端虚拟机提供了改进的运行应用程序和小程序的性能。java虚拟机的热点客户已减少应用程序的启动时间和内存占用特别调整,使其特别适合客户环境。在一般情况下,客户端系统更好的图形用户界面。

      因此,真正的区别也在编译器级别上:

      客户端虚拟机编译器不尝试执行由编译器在服务器虚拟机上执行的更复杂的优化,但在交换过程中,它需要较少的时间来分析和编译一段代码。这意味着客户端虚拟机可以更快地启动,并需要一个较小的内存占用。

      服务器虚拟机包含一个先进的自适应编译器支持许多C++编译器的优化进行优化,同样的类型,以及一些优化,不能用传统的编译器完成的,比如积极的内联在虚拟方法调用。这是一个竞争和性能优势,静态编译器。自适应优化技术在它的方法是非常灵活的,通常优于甚至先进的静态分析和编译技术。

      -Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升,原因是:当虚拟机在-Client模式的时候,使用的是一个代号为C1的轻量级编译器,而-Server模式启动的虚拟机采用相对重量级代号为C2的编译器,C2比C1编译器编译的相对彻底,服务起来之后,性能高。

      一般只要变更-server KNOWN与-client KNOWN两个配置的先后顺序即可,前提是JAVA_HOME/jre/bin目录下同时存在server和client两个文件夹,分别对应各自的jvm

      说了这么多其实总结成一句话就是:

      JVM Server模式下应用启动慢但运行速度快,JVM Client模式下应用启动快但运行速度要慢些

      推荐:服务器上请以Server模式运行,面客户端或GUI模式下就以Client模式运行

      以上就是本次介绍的Java虚拟机电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

      上一篇:Oracle Database 11g RAC手册

      下一篇:Microsoft Power BI数据可视化与数据分析

      查看更多
      读者心得
      25小时37分钟前回答

      java虚拟机多线程进阶篇总结

      1.线程池基本参数 以Executors.newFixedThreadPool()这种创建方式为例: 大家想象,假如你创建一个线程池,你想这个池子有些什么参数呢?首先这个池子必须要有一个最大值;然后还希望这个池子的线程数量有一个警戒线,到了这个警戒线的位置说明线程池暂时已经满了,如果这个时候还有人过来拿线程,我们就要把这些人抓起来扔到一个地方去让他们排队,告诉他们:请稍等,等我们的线程有空闲的时候再来处理你的事;再然后假如人排队的地方都满了,玛德,好多人,于是线程池就想办法东拼西凑又多搞出来了几个线程去处理了;最后,假如那搞出来的这几个线程还是不够用,并且排队的地方总是满的……

      29小时5分钟前回答

      java命令调用虚拟机方法总结

      java命令调用虚拟机 java的虚拟机调用,按住Win+r命名,如图所示: 继续点击确定按钮,如图所示: 可以看到后台命令,如图所示: 调用虚拟机编译Test.java代码;如图所示: Test.java可以看到在E盘JavaTest文件夹下,,如图所示: 回到命令后台,输入:E: 按回车键,然后在输入:cd JavaTest,按回车键, 然后输入javac Test.java,按回车键,这个是调用虚拟机编程的java代码, 最后输入:java Test,按回车键,可以看到后台输出:Hello World! ,这个是调用虚拟机执行class代码的结果。如图所示: 最后可以看到E盘下的JavaTest文件夹下生成一个Test.class文件,如图所示: 以上就是关于java中的java命令如何调用虚拟机的全部知……

      码农之家

      白英华 提供上传

      资源
      38
      粉丝
      24
      喜欢
      98
      评论
      13

      Copyright 2018-2021 www.xz577.com 码农之家

      版权投诉 / 书籍推广:520161757@qq.com