`
youyu4
  • 浏览: 441977 次
社区版块
存档分类
最新评论

JVM之优化(部署模型和Runtime)

 
阅读更多

JVM之优化(部署模型和Runtime)

 

选择JVM部署模型

 

      JVM部署模型的选择总体来说就是决定应用是部署在单个JVM实例还是多个JVM实例上(这里简单举例说明一下JVM实例,比如:我们常用eclipse开发,启动一个eclipse就是启动了一个JVM实例,然后在JVM中运行一个main程序,又会启动一个JVM实例,两个JVM实例是隔离开的)。哪一个是最适合你的应用的呢?这个是前面说到系统需求和潜在规则来决定的。比如说:假如你要部署您的应用在一个64位的机器上面,可以支持更大Java堆,如果应用依赖第三方的本地代码组件,而且这个第三方暂时不支持64位机器,那么你就必须要强制使用32位的JVM而且要使用更小优化的Java堆。

 

 

单实例JVM模型

 

      在单实例的JVM上部署应用,有一个好处,就是可以减低管理成本,毕竟有更少的JVM需要去维护嘛。应用能够使用的总内存更小,由于每一个单独部署的JVM有能够使用的内存上限。

 

注意:部署应用在单个JVM上存在的挑战是应用的可用性存在极高的风险,比如:JVM失败或者应用灾难性错误。

 

 

多实例JVM模型

 

      部署Java应用在多个JVM上面有提高可用性和能够间接降低延迟的好处,由于应用部署在多个JVM上,某一个JVM出错,只会导致应用某部分无法使用,不会导致整个应用无法使用。多JVM部署可以提供低延迟,在多JVM部署中,Java堆的大小倾向于更小,更小Java堆可以允许有更小的垃圾回收暂停,垃圾回收器的暂停是明显影响延迟。另外,如果应用存在明显瓶颈,多个JVM部署可能帮助提升吞吐量,把压力分布到多个JVM上面,可以让用承受更大的压力。

 

      使用多个JVM,JVM可能会和处理器绑定。把JVM和处理器绑定在一起,可以避免应用和JVM的线程在多个CPU上切换,提升CPU cache的命中率。

 

注意:部署多JVM的挑战在于管理、监控和维护需要更多的努力。

 

 

一般建议

 

  • 没有最好的部署模型,只有更合适的,主要还是看需求和资源
  • JVM需要大量内存占用,64位JVM可以提供比32位更大的JVM
  • 要保证第三方组件支持64位,不管是第三方组件或自己开发的程序,必须在64位环境下编译

 

 

选择Runtime

 

  • Client:启动块,占用内存小,32位,例如:eclipse
  • Server:启动慢,启动后性能好,32位和64位
  • Tiered:更快的启动时间,更高性能的生成代码,java 7 新增

注意:如果不是道使用什么Runtime,就使用Server,对启动时间有限制就用 Client 或 Tiered。

 

 

 

32位或者64位JVM

 

      除了client和server runtime的选择,还需要在32位或者64位之间做出选择,HotSpot VM的默认配置是32位的。做出32位和64位的选择取决于应用需要的内存占用以及依赖的第三方库是否支持64位系统——如果有通过JNI使用本地接口。决定应用需要消耗的内存占用,会在下节中介绍。下面的表格列出了一些指导帮助在32位JVM或者64位JVM之间做出选择。注意的是HotSpot VM还没有64位的client runtime。



 

 

 

选择垃圾回收器

 

  • Serial、Serial old:串行垃圾回收,简单,但是慢
  • Parallel、Parallel old:并行垃圾回收,面向吞吐量,适合小内存
  • CMS:适用低延迟,但是有内存碎片
  • G1:使用大内存的JVM,分块垃圾回收,能保证吞吐量的前提下,控制延迟

 

  • 大小: 112.6 KB
分享到:
评论

相关推荐

    使用onnxruntime部署yolov5.zip

    一般的ONNX部署深度学习模型可以分为Opencv部署和ONNXRuntime部署,但是Opencv毕竟只是第三方的库,对ONNX的支持并不是很风格,而且很多的模型还是不支持的,如果要使用还需要去修改模型的源码才可以。所以下面就...

    java虚拟机jvm及Tomcat中的jvm有关内存的设置与调优

    在部署Java Web应用时,Tomcat作为常见的容器之一,其JVM内存设置同样至关重要。以下是在Tomcat环境中优化JVM内存的具体步骤: 1. **环境变量设置**:通过设置`CATALINA_OPTS`环境变量,可以在系统级别全局地调整...

    jvm特性与java特性

    5. 跨平台性:Java程序能够在任何安装了JVM的平台上运行,这使得Java应用的部署和分发更为方便。 6. 社区支持:Java拥有庞大的开发者社区,这为学习、使用Java以及遇到问题时的求助提供了极大的便利。 在Android...

    JVM-整体结构原理深度解析

    ### JVM-整体结构原理深度解析 #### 一、JVM简介及跨平台性 ##### 1.1 JVM定义 JVM(Java Virtual Machine),即Java虚拟机,是一种...此外,了解JVM内存模型有助于开发者优化代码性能,避免常见的内存泄漏等问题。

    简单谈谈JVM、JRE和JDK的区别与联系

    Java开发工具包(JDK)、Java运行环境(JRE)和Java虚拟机(JVM)是Java编程语言的三个核心组件,它们之间有着密切的关系和明确的分工。 JDK(Java Development Kit)是Java语言的软件开发工具包,它是整个Java开发...

    tomcat 架构解析和优化。pdf

    4. **连接器优化**:Coyote连接器支持NIO、BIO和APR(Apache Portable Runtime)模式,根据实际需求选择合适的模式能有效提高性能。 5. **JVM调优**:Tomcat运行在JVM上,因此Java虚拟机的内存设置、垃圾回收策略等...

    tomcat7 优化 性能调优

    在现代Web应用开发中,Apache Tomcat因其轻量级、灵活且易于部署的特点成为开发者们的首选应用服务器之一。然而,在面对高并发访问场景时,如何有效地优化Tomcat以提高其性能变得至关重要。本文将围绕“Tomcat7优化...

    Android学习教程资料

    同时,理解模型的优化、量化和剪枝等技术,可以使模型在有限的移动设备资源上运行得更加高效。 在压缩包中的"android深度学习教材"很可能包含了一系列关于如何构建、训练和部署深度学习模型的课程材料。这些资料...

    机器学习平台

    【机器学习平台】是现代数据分析和人工智能领域的重要组成部分,它为数据科学家和开发人员提供了集成了各种算法、模型训练、评估以及部署功能的环境。在Java编程语言的背景下,我们可以构建一个高效且可扩展的机器...

    深度历险.rar

    有时,JDK和JRE的版本不匹配可能会导致程序运行错误,因此在项目开发过程中,需要确保开发环境和部署环境的JDK与JRE版本一致性。 《深度历险》一书还可能涵盖了Java应用程序的执行流程,从源代码的编写到最终的运行...

    java虚拟机移植j2me虚拟机的移植文档

    当需要将Java ME应用扩展到不直接支持JVM的平台,如BREW(Binary Runtime Environment for Wireless)平台时,就需要进行JVM的移植工作。 BREW是由高通公司开发的一种专为无线设备设计的应用程序运行环境,它并不...

    搜索推荐Serverless架构和业务中台技术实践.pdf

    从2011年到2019年,经历了从自建平台到Serverless的转变,包括FAAS(Function as a Service)的采用,以及对JVM Runtime的优化,以面向在线服务进行性能提升。 【关键技术与特性】 1. **FAAS**: 用于快速创建新...

    Packtpub.Oracle.JRockit.The.Definitive.Guide.Jun.2010.rar

    8. **并发与多线程**:讨论JRockit对Java并发特性的支持,包括线程安全、锁优化和并发工具的使用。 9. **问题排查与故障诊断**:学习如何使用JRockit提供的日志、堆转储和线程转储等工具来定位和解决运行时问题。 ...

    Oracle-尹旭-Java_Today_and_Tomorrow1

    根据统计数据,Java 是 AWS 和 Google App Engine 云平台上的第一部署 Runtime 环境,在 Microsoft Azure 云平台上排名第三。Java Runtime 环境是云计算 IaaS、PaaS 和 SaaS 基础架构的核心组件。 Java 成功的基础 ...

    tomcat7.0web服务器共享

    3. **JVM调优**:根据系统资源和应用需求,调整JVM参数以优化内存使用和垃圾回收。 **总结** Apache Tomcat 7.0作为一款广泛应用的Java Web服务器,为开发者提供了丰富的功能和良好的性能。通过深入理解其核心特性...

    APR相关资源包.rar

    "APR相关资源包"显然包含了与Tomcat性能优化相关的资料,特别是涉及了APR(Apache Portable Runtime)库。APR是Apache软件基金会开发的一个底层库,它为各种操作系统提供了一个统一的API,旨在提升Apache HTTP服务器...

    JAVA架构师知识整理)

    * 实施:根据物理模型,实施数据库的创建和部署。 三、JVM JVM(Java Virtual Machine)是Java平台的 Runtime 环境,负责运行Java程序。JVM的主要组件包括类加载器、运行时数据区、执行引擎和垃圾回收器等。 * 类...

    jdk-9.0.4_windows-x64.zip

    通过下载和安装这个压缩包,开发者可以获得完整的Java开发工具和运行环境,以便创建、测试和部署Java应用程序。同时,这个版本的JDK针对性能、模块化和安全性进行了优化,旨在提供更好的开发体验和更可靠的应用运行...

    QCon-搜索推荐Serverless架构和业务中台技术_实践_沈敏31页.pdf

    在技术实现上,Serverless基于JVM Runtime进行了高度性能优化,面向在线服务,确保了百万级QPS的低延迟处理能力。借助Docker化和更细粒度的隔离,如AJDK多租户和高密度部署,中台能够有效地管理资源,特别是在双11...

    Java虚拟机

    **Java虚拟机**(JVM, Java Virtual Machine)是Java技术的核心组件之一,它为Java程序提供了一个虚拟的运行环境。简单来说,JVM就是一个能够执行Java字节码的虚拟计算机。它拥有自己的硬件体系结构,包括处理器、堆栈...

Global site tag (gtag.js) - Google Analytics