当前位置: 首页 > news >正文

GraalVM运行模式和企业级应用

文章目录

  • GraalVM运行模式
    • JIT模式
    • AOT模式
  • GraalVM的问题和解决方案
  • GraalVM企业级应用
    • 传统架构的问题
    • Serverless架构
    • 函数计算
    • Serverless应用场景
    • Serverless应用
  • GraalVM内存参数

GraalVM运行模式

JIT模式

  • JIT( Just-In-Time )模式 ,即时编译模式
    JIT模式的处理方式满足两个特点:
    Write Once,Run Anywhere -> 一次编写,到处运行。
    ✓ 预热之后,通过内置的Graal即时编译器优化热点代码,生成比Hotspot JIT更高性能的机器码。

  • GraalVM的JIT编译器在编译过程中使用了即时优化技术,包括方法内联、循环优化、逃逸分析等。这些优化技术可以提高代码的执行效率,并且针对不同的应用场景进行了优化,例如对于大型企业应用、嵌入式系统或数据密集型应用等。
    在这里插入图片描述

AOT模式

  • AOT(Ahead-Of-Time)模式 ,提前编译模式
  • 在AOT模式下,GraalVM将Java字节码编译成本地机器代码,并生成一个可执行文件,可以直接在目标平台上运行,而无需Java虚拟机(JVM)。这使得Java应用程序可以像传统的本地应用程序一样启动和执行,而无需依赖JVM。但是不具备跨平台特性,不同平台使用需要单独编译。这种模式生成的文件称之为Native Image本地镜像。
  • GraalVM的AOT模式为Java应用程序提供了更快的启动时间和更低的内存消耗,同时仍然保持了良好的性能和跨平台的特性。这使得Java应用程序可以更好地适应云原生、嵌入式和边缘计算等场景的需求。
    在这里插入图片描述

GraalVM的问题和解决方案

  • GraalVM的AOT模式虽然在启动速度、内存和CPU开销上非常有优势,但是使用这种技术会带来几个问题:
  1. 跨平台问题,在不同平台下运行需要编译多次,编译平台的依赖库等环境要与运行平台保持一致。
  2. 使用框架之后,编译本地镜像的时间比较长,同时也需要消耗大量的CPU和内存。
  3. AOT 编译器在编译时,需要知道运行时所有可访问的所有类。但是Java中有一些技术在运行时创建类,例如反射、动态代理等。这些技术在很多框架比如Spring中大量使用,所以框架需要对AOT编译器进行适配解决类似的问题。

  • 解决方案:
  1. 使用公有云的Docker等容器化平台进行在线编译,确保编译环境和运行环境是一致的,同时解决编译资源问题。
  2. 使用SpringBoot3等整合GraalVM AOT模式的框架版本

GraalVM企业级应用

传统架构的问题

  • 传统的系统架构中,服务器等基础设施的运维、安全、高可用等工作都需要企业自行完成,存在两个主要问题:
  1. 开销大,包括人力的开销、机房建设的开销
  2. 资源浪费,面对一些突发的流量冲击,比如秒杀,必须提前规划好容量准备好大量的服务器,这些服务器在其他时候会处于闲置的状态,造成大量的浪费
    在这里插入图片描述

Serverless架构

  • 随着虚拟化技术、云原生技术的愈发成熟,云服务商提供了一套称为Serverless无服务器化的架构。企业无需进行服务器的任何配置和部署,完全由云服务商提供。比较典型的有亚马逊AWS、阿里云等。
    在这里插入图片描述

函数计算

  • Serverless架构中第一种常见的服务是函数计算(Function as a Service),将一个应用拆分成多个函数,每个函数会以事件驱动的方式触发。典型代表有AWS的Lambda、阿里云的FC。
    在这里插入图片描述

Serverless应用场景

  • 函数计算主要应用场景有如下几种:
  1. 小程序、API服务中的接口,此类接口的调用频率不高,使用常规的服务器架构容易产生资源浪费,使用Serverless可以实现按需付费降低成本,同时支持自动伸缩能应对流量的突发情况。
  2. 大规模任务的处理,比如音视频文件转码、审核等,可以利用事件机制当文件上传后,自动触发对应的任务。函数计算的计费标准中包含CPU和内存使用量,使用GraalVM AOT模式编译本地镜像可以节省成本。
    在这里插入图片描述

Serverless应用

  • 函数计算的服务资源比较受限,比如AWS的Lambda服务一般无法支持超过15分钟的函数执行,所以云服务商提供另外一套方案:基于容器的Serverless应用,无需手动配置K8s中的Pod、Service等内容,只需选择镜像就可自动生成应用服务。
  • 同样,Serverless应用的计费标准中包含CPU和内存使用量,所以使用GraalVM AOT模式编译出来的本地镜像可以节省更多的成本。
    在这里插入图片描述

GraalVM内存参数

  • 由于GraalVM是一款独立的JDK,大部分HotSpot中的虚拟机参数都不适用。
    ⚫ 社区版只能使用串行垃圾回收器(Serial GC),使用串行垃圾回收器的默认最大 Java 堆大小会设置为物理内存大小的 80%,调整方式为使用 -Xmx最大堆大小。如果希望在编译期就指定该大小,可以在编译时添加参数-R:MaxHeapSize=最大堆大小
    ⚫ G1垃圾回收器只能在企业版中使用,开启方式为添加–gc=G1参数,有效降低垃圾回收的延迟。
    ⚫ 另外提供一个Epsilon GC,开启方式:–gc=epsilon ,它不会产生任何的垃圾回收行为所以没有额外的内存、CPU开销。如果在公有云上运行的程序生命周期短暂不产生大量的对象,可以使用该垃圾回收器,以节省最大的资源。
  • -XX:+PrintGC -XX:+VerboseGC 参数打印垃圾回收详细信息

相关文章:

GraalVM运行模式和企业级应用

文章目录 GraalVM运行模式JIT模式AOT模式 GraalVM的问题和解决方案GraalVM企业级应用传统架构的问题Serverless架构函数计算Serverless应用场景Serverless应用 GraalVM内存参数 GraalVM运行模式 JIT模式 JIT( Just-In-Time )模式 ,即时编译模…...

数据挖掘入门项目二手交易车价格预测之特征工程

文章目录 目标常见的特征工程具体步骤1. 导入数据2. 删除异常值3. 特征构造3.1 为树模型构造特征3.2 为LR NN 之类的模型构造特征 4. 特征筛选过滤式包裹式嵌入式 5. 总结 本文数据集来自阿里天池:https://tianchi.aliyun.com/competition/entrance/231784/informat…...

MFC通用静态库制作与使用

开发环境VS2013 1、新建工程,选择Win32 Project,命名,选择路径等 2、选择Static library ,勾选MFC 3、点击完成。在工程中添加相应的头文件、源文件等通用功能函数或者类。 4、在其他工程引入使用。在使用的工程项目设置中Linker…...

点亮创意:ChatGPT如何搭桥DALL-E图像编辑新纪元

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

《QT实用小工具·十二》邮件批量发送工具

1、概述 源码放在文章末尾 该项目实现了邮件的批量发送&#xff0c;如下图所示&#xff1a; 项目部分代码如下所示&#xff1a; #ifndef SMTPCLIENT_H #define SMTPCLIENT_H#include <QtGui> #include <QtNetwork> #if (QT_VERSION > QT_VERSION_CHECK(5,0,…...

4.2总结

了解了部分Api的使用并学习了接口的API API API包含了较多种类&#xff08;System,Runtime等&#xff09; System其实就是一个工具类&#xff0c;提供了一些与系统相关的方法 下面有一些常间的System方法 方法名说明public static void exit (int status)终止当前运行的ja…...

ArcGIS 10.8中文版详细安装教程(附安装包)

ArcGIS 10.8中文版详细安装教程&#xff08;附安装包&#xff09; 关键词&#xff1a;ArcGIS 10.8中文版安装 1.概述 ArcGIS Desktop 10.8中文版是由ESRI公司开发的一款专业的地理信息系统&#xff0c;一套完整的桌面GIS软件套件&#xff0c;它包含ArcMap、ArcCatalog、ArcG…...

什么是EL表达式?怎么使用?

文章目录 一、什么是EL表达式1、命令格式&#xff1a;${作用域对象别名.共享数据} 二、EL表达式与作用域对象别名1、JSP文件可以使用的作用域对象2、EL表达式提供作用域对象别名3、EL表达式将引用对象属性写入到响应体4、EL表达式简化版 三、EL表达式与运算表达式四、EL表达式提…...

基于php医院预约挂号系统

摘 要 随着信息时代的来临&#xff0c;过去的管理方式缺点逐渐暴露&#xff0c;对过去的医院预约挂号管理方式的缺点进行分析&#xff0c;采取计算机方式构建医院预约挂号系统。本文通过阅读相关文献&#xff0c;研究国内外相关技术&#xff0c;开发并设计一款医院预约挂号系统…...

Java NIO详解

一、概念 NIO, 即new io&#xff0c;也叫非阻塞io 二、NIO三个核心组件&#xff1a; Buffer数据缓冲区Channel通道Selector选择器 1、Buffer缓冲区 缓冲区本质上是一个可以存放数据的内存块&#xff08;类似数组&#xff09;&#xff0c;可以在这里进行数据写入和读取。此…...

InstantID作者的风格保持新项目InstantStyle发布,一个强化版的IPapadter来了!

之前已经和大家介绍过InstantID相关相关的文章&#xff0c;感兴趣的小伙伴可以点击下面链接进行阅读&#xff5e; ​​​​​​​​​​​​​无缝衔接Stable Diffusion&#xff0c;一张照片几秒钟就能生成个性化图片-InstantID_instant-id 模型-CSDN博客 今天向大家介绍Ins…...

【Java程序员面试专栏 综合面试指南】5年资深程序员面试指南

基础知识对于5年内工作经验的同学考察相对比较多。包括编程语言、计算机网络、操作系统、设计模式、分布式知识、MySQL、Redis这种。其中随着年限的增长,基础知识考察的会越来越少,例如操作系统基本上只在学生阶段考察,计算机网络对于5年经验来说也考察的相对较少。5年以上对…...

echart 仪表盘实现指针的渐变色及添加图片

需求&#xff1a; 在仪表盘中设置指针为渐变色&#xff0c;并在仪表盘中间添加图片。 实现重点&#xff1a; 1、仪表盘指针渐变色的实现 渐变色通过设置pointer的itemStyle属性内的color实现&#xff0c;重点是echart版本&#xff0c;这个原本使用4.8.0的版本不起作用&#xff…...

C#面试题目含参考答案(一)

前言 面试是应聘一个工作岗位的环节,来考察一个人的工作能力与综合素质。在应聘C#程序员或与C#相关岗位时,我们都会被问到一些与.NET、C#、数据库、业务知识或编程思想等问题。本文列举一些问题及提供参考答案,题目(一)。 题目 1、什么是面向对象的三大特性 参考答案:…...

【Canvas技法】图解绘制圆弧的重要函数 arc(x,y,r,startAngle,endAngle,clockWise)

【一图释疑】 【绘制上图用代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>Html5/Canvas中绘制圆弧的重要函数 arc(x,y,r,startA…...

vulhub中Apache Solr 远程命令执行漏洞复现(CVE-2019-0193)

Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发&#xff0c;主要基于 HTTP 和 Apache Lucene 实现。此次漏洞出现在Apache Solr的DataImportHandler&#xff0c;该模块是一个可选但常用的模块&#xff0c;用于从数据库和其他源中提取数据。它具有一个功能&#…...

水泥5G智能制造工厂数字孪生可视化平台,推进水泥行业数字化转型

水泥5G智能制造工厂数字孪生可视化平台&#xff0c;推进水泥行业数字化转型。水泥5G智能制造工厂数字孪生可视化平台&#xff0c;是水泥行业数字化转型的关键推手。数字孪生平台运用先进的信息技术和数字化手段&#xff0c;实现水泥生产过程的数字化模拟、可视化监控和智能化管…...

vue 一个简单实例化Vue.js 是一个流行的前端框架,如何创建一个基本的计数器应用

当然可以&#xff01;Vue.js 是一个流行的前端框架&#xff0c;用于构建用户界面。下面是一个简单的 Vue.js 例子&#xff0c;演示了如何创建一个基本的计数器应用。 首先&#xff0c;确保你已经在项目中引入了 Vue.js。你可以通过 CDN 引入 Vue.js&#xff0c;或者在项目中安…...

1.k8s架构

k8s集群架构 一个Kubernetes集群至少包含一个控制平面(control plane)&#xff0c;以及一个或多个工作节点(worker node)。控制平面(Control Plane) : 控制平面负责管理工作节点和维护集群状态。所有任务分配都来自于控制平面。工作节点(Worker Node) : 工作节点负责执行由控制…...

【Linux】详解动态库链接和加载对可执行程序底层的理解

一、动静态库链接的几种情况 如果我们同时提供动态库和静态库&#xff0c;gcc默认使用的是动态库。如果我们非要使用静态库&#xff0c;要加-static选项。如果我们只提供静态库&#xff0c;那可执行程序没办法&#xff0c;只能对该库进行静态链接&#xff0c;但程序不一定整体…...

中文Mistral模型介绍(Chinese-Mistral)——中文大语言模型

中文Mistral简介 Chinese-Mistral由清华大学地学系地球空间信息科学实验室开发。 该模型基于Mistral发布的Mistral-7B-v0.1训练得到。首先进行中文词表扩充&#xff0c;然后采用实验室提出的PREPARED训练框架&#xff08;under review&#xff09;在中英双语语料上进行增量预训…...

yolo v5 中 letterbox对不规则矩形框的输入调整

在对数据或特征的处理中&#xff0c;为了避免输入图像或特征&#xff0c;经过resize等等操作&#xff0c;改变了目标特征的尺度信息&#xff0c;一般会引入一些操作&#xff0c;比如&#xff1a; 在特征维度&#xff0c;加入SPP&#xff08;空间金字塔池化&#xff09;&#x…...

STL是什么?如何理解STL?

文章目录 1. 什么是STL2. STL的版本3. STL的六大组件4. 如何学习STL5.STL的缺陷 1. 什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个包罗数据结构与算法的软件框架。 2. …...

【Spring篇】Spring IoC DI

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Spring系列】 本专栏旨在分享学习Spring MVC的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 前言一、IoC二、…...

Python语言例题集(010)

#!/usr/bin/python3 #在链表的末端插入新的节点。 class Node(): def init(self,dataNone): self.datadata self.nextNone class LinkedList(): def init(self): self.headNone def printList(self):ptrself.headwhile ptr:print(ptr.data)ptrptr.nextdef ending(self,newd…...

redis---主从复制

主从复制是指将一台redis服务器的数据复制到其他redis服务器&#xff0c;也叫主节点和从节点。 一个主节点可以有多个从节点。而每个从节点只能有一个主节点。数据的复制是单向的&#xff0c;只能由主节点到从节点。一般来说&#xff0c;主节点负责写操作&#xff0c;从节点负…...

搜索引擎-03-搜索引擎原理

拓展阅读 搜索引擎-01-概览 搜索引擎-02-分词与全文索引 搜索引擎-03-搜索引擎原理 Crawl htmlunit 模拟浏览器动态 js 爬虫入门使用简介 Crawl jsoup 爬虫使用 jsoup 无法抓取动态 js 生成的内容 Crawl WebMagic 爬虫入门使用简介 webmagic 全网搜索引擎架构与流程如何…...

mysql语句学习

SQL Select语句完整的执行顺序&#xff1a; 1、from子句组装来自不同数据源的数据&#xff1b; &#xff08;先join在on&#xff09; 2、where子句基于指定的条件对记录行进行筛选&#xff1b; 3、group by子句将数据划分为多个分组&#xff1b; 4、使用聚集函数进行计算&a…...

【Apache Doris】周FAQ集锦:第 1 期

【Apache Doris】周FAQ集锦&#xff1a;第 1 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户和…...

Windows创建远程线程学习

CreateRemoteThread是一个Windows API函数,它能够创建一个在其它进程地址空间中运行的线程; 下面来简单做一下,配合procexp工具; VC代码如下,我是写到一个菜单单击处理函数中, void CCrrmthView::OnMenuitem32771() {// TODO: Add your command handler code hereHAN…...

中国建设银行网站网上银行/郑州seo网络推广

文章目录1. submodule简介2. submodule使用day1&#xff1a;开发者A为主模块添加submoduleday2&#xff1a;开发者B克隆主模块到本地&#xff0c;同时初始化子模块day3&#xff1a;开发者B拉取远程更新&#xff08;包括主模块和子模块&#xff09;day4&#xff1a;开发者B修改子…...

网站制作课题组/nba最新交易汇总

本机的orcl 没装好&#xff0c;但是sqlplus可以用&#xff0c;想连接远程的数据库服务器&#xff0c;研究一下sqlplus使用 首先使用dba权限登录: 命令&#xff1a;sqlplus 用户名/密码ip地址[:端口]/service_name [as sysdba] 示例&#xff1a;sqlplus sys/sys192.168.0.254:…...

wordpress如何更改页脚背景颜色/百度灰色关键词代做

MariaDB数据库的创建语法,和MySQL数据库的语法是一样的 此文章是为了快速想起语法,不包含授权 MariaDB数据库创建用户 首先要知道一个事情,就是用户是 “用户名主机地址(网段)” 这样才算是一个用户 主机地址授权的范围大致如下: % – 表示:任意主机都可以连接到数据库(这很不…...

铜川做网站的公司电话/最新的销售平台

本文主要介绍了毕业设计选题系统的研究背景和意义&#xff0c;同时分析了该系统的可行性问题。另外还有相关技术介绍&#xff0c;以及系统的结构与功能模块、数据库的设计、界面设计等。随着网络技术和办公自动化的高速发展&#xff0c;信息技术已经深入到了社会的每一个角落&a…...

b2b开发/南昌seo技术外包

Id sunRainAmazing hibernate 注解 Id无对应的属性指定实体的主键。Id应用注释的字段或属性应为以下类型之一&#xff1a;任何Java基元类型; 任何原始的包装类型; String;java.util.Date; java.sql.Date; java.math.BigDecimal;java.math.BigInteger。实体主键的映射列被认为是…...

可以做代销的网站都有哪些/网站品牌推广公司

欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】当用户请求一个网页的时候&#xff0c;如何让服务器把网页文件发送给用户&#xff1f;文件服务器首先我们要知道&#xff0c;用户在浏览器中看到的页面其实就是一个.html文件&#xff0c;就是我们上一篇文章时候撰写的...代码…...