graalvm 拯救生命,速速入手

简介: graalvm 拯救生命,速速入手

graalvm 拯救生命,速速入手

标题很夸张,graalvm怎么就拯救生命了?把一个启动5-6秒的项目加速到3秒启动,不就是在拯救生命,拯救发际线吗?

我在上一篇博客"SpringBoot3.0工程建立"末尾启动了工程,其启动时间为6.2s,多次尝试也在5.5s以上。但是graalvm 可以使启动时间降低为3秒。

graalvm官网下载


当前最新版为GraalVM Community 22.3,使用官网首页下载命令进行下载,会获得jdk 17版本的graalvm。当然,仍然需要能够连接到github。其包大小在284M,比一般JVM大许多,毕竟支持那么多语言运行。

如若下载进不去,需要安装包,可添加wx: wanglhup 备注 csdn

bash <(curl -sL https://get.graalvm.org/jdk)

如果手动下载的包,使用tar -xzvf xxx.tar,gz 进行解压即可。使用命令的会自动解压,并尝试配置你的环境变量,JAVA_HOME。

进入其目录,应如下:

dark@dark:~/.jdks/gvm/graalvm-ce-java17-22.3.0$ ls -al
总用量 448
drwxrwxr-x 10 dark dark   4096 12月 20 00:41 .
drwxr-xr-x  3 dark dark   4096 12月 20 00:41 ..
drwxrwxr-x  2 dark dark   4096 12月 20 00:41 bin
drwxrwxr-x  5 dark dark   4096 12月 20 00:41 conf
-rw-rw-r--  1 dark dark   1611 10月 20 18:42 GRAALVM-README.md
drwxrwxr-x  3 dark dark   4096 12月 20 00:41 include
drwxrwxr-x  2 dark dark   4096 12月 20 00:41 jmods
drwxrwxr-x  6 dark dark   4096 12月 20 00:41 languages
drwxrwxr-x 72 dark dark   4096 12月 20 00:41 legal
drwxrwxr-x 13 dark dark   4096 12月 20 00:41 lib
-rw-rw-r--  1 dark dark  21035 12月 19 23:47 LICENSE_NATIVEIMAGE.txt
-rw-rw-r--  1 dark dark  23491 10月 20 18:42 LICENSE.txt
-rw-rw-r--  1 dark dark   4128 10月 20 19:09 release
-rw-rw-r--  1 dark dark 354225 10月 20 18:42 THIRD_PARTY_LICENSE.txt
drwxrwxr-x  9 dark dark   4096 12月 20 00:41 tools

验证JAVA版本

在graalvm的bin目录下执行命令验证java版本,当前的版本为17.0.5

dark@dark:~/.jdks/gvm/graalvm-ce-java17-22.3.0/bin$ ./java -version
openjdk version "17.0.5" 2022-10-18
OpenJDK Runtime Environment GraalVM CE 22.3.0 (build 17.0.5+8-jvmci-22.3-b08)
OpenJDK 64-Bit Server VM GraalVM CE 22.3.0 (build 17.0.5+8-jvmci-22.3-b08, mixed mode, sharing)

IDE切换JAVA版本

  1. 使用快捷键ctrl+shift+alt+s。或者依次点击:文件->项目结构,并在平台设置->SDK中加入我们刚解压好的graalvm,如图:

  1. 在项目中,将sdk选择为我们刚引入的graalvm-17

启动项目

执行Application中的main方法来验证一下启动速度:

/home/dark/.jdks/gvm/graalvm-ce-java17-22.3.0/bin/java org.dark.migration.MigrationApplication
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.0.0)
2022-12-20T01:06:02.552+08:00  INFO 10606 --- [           main] o.dark.migration.MigrationApplication    : Starting MigrationApplication using Java 17.0.5 with PID 10606 (/home/dark/code/migration/target/classes started by dark in /home/dark/code/migration)
2022-12-20T01:06:02.561+08:00  INFO 10606 --- [           main] o.dark.migration.MigrationApplication    : No active profile set, falling back to 1 default profile: "default"
2022-12-20T01:06:03.276+08:00  INFO 10606 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2022-12-20T01:06:03.299+08:00  INFO 10606 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 12 ms. Found 0 JPA repository interfaces.
2022-12-20T01:06:03.941+08:00  INFO 10606 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2022-12-20T01:06:04.550+08:00  INFO 10606 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2022-12-20T01:06:04.611+08:00  INFO 10606 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2022-12-20T01:06:04.669+08:00  INFO 10606 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 6.1.5.Final
2022-12-20T01:06:05.420+08:00  INFO 10606 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2022-12-20T01:06:05.822+08:00  INFO 10606 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2022-12-20T01:06:05.832+08:00  INFO 10606 --- [           main] o.dark.migration.MigrationApplication    : Started MigrationApplication in 3.832 seconds (process running for 4.358)

可以看到启动速度仅3.8s,有效挽救了博主的顶上三毛。

目录
相关文章
|
8月前
|
监控 Oracle Java
《深入浅出Java虚拟机 — JVM原理与实战》带你攻克技术盲区,探索各大JVM虚拟机特色 —— JVM故障排除指南(先导篇)
《深入浅出Java虚拟机 — JVM原理与实战》带你攻克技术盲区,探索各大JVM虚拟机特色 —— JVM故障排除指南(先导篇)
129 0
|
Arthas 监控 Java
|
4月前
|
Java 编译器 Maven
【颠覆你的认知!】当Quarkus邂逅GraalVM本机镜像,应用启动竟快到飞起——背后的技术秘密等你揭秘!
Quarkus框架因轻量级与高性能而在Java开发社区广受关注。结合GraalVM使用能显著提升应用启动速度与运行效率,这得益于GraalVM的本机镜像支持。本文将介绍如何利用Quarkus和GraalVM构建高效应用,并提供示例代码演示具体步骤。首先需安装GraalVM环境并配置Maven支持构建本机镜像。接着创建一个简单的RESTful服务端点作为示例,通过命令行编译生成本机可执行文件并运行。这种方式能够大幅提升应用性能,但需注意构建时间和部分Java特性兼容性问题。
66 1
|
5月前
|
开发者 CDN 监控
【破局·提速】当Vaadin遇上性能怪圈:开发者的智慧较量与极速加载的实战秘籍!
【8月更文挑战第31天】本文详细介绍了优化Vaadin应用性能的方法,特别是提高加载速度的实战技巧。首先分析性能瓶颈,如服务器响应时间和数据库查询效率等;然后通过代码优化、数据分页与急切加载技术减少资源消耗;接着利用资源压缩合并及CDN加速,进一步提升加载速度;最后通过持续性能监控和测试确保优化效果。通过综合应用这些策略,可显著改善用户体验。
92 0
|
5月前
|
开发者 C# Android开发
明白吗?Xamarin与Native的终极对决:究竟哪种开发方式更适合您的项目需求,让我们一探究竟!
【8月更文挑战第31天】随着移动应用开发的普及,开发者面临多种技术选择。本文对比了跨平台解决方案Xamarin与原生开发方式的优势与劣势。Xamarin使用C#进行跨平台开发,代码复用率高,可大幅降低开发成本;但因基于抽象层,可能影响性能。原生开发则充分利用平台特性,提供最佳用户体验,但需维护多套代码库,增加工作量。开发者应根据项目需求、团队技能和预算综合考量,选择最适合的开发方式。
137 0
|
7月前
|
存储 Java 数据处理
启航Java编程:基础三部曲-第二部
启航Java编程:基础三部曲-第二部 Java语法全接触:变量、数据类型与运算符详解
79 1
|
小程序 安全 前端开发
【创造者】关于小程序的开发
【创造者】关于小程序的开发
85 0
|
8月前
|
数据采集 算法 Java
业余爱好者想入门编程,一定远离那些只会说No的家伙,尤其程序员
业余爱好者想入门编程,一定远离那些只会说No的家伙,尤其程序员
73 2
|
编译器 程序员 C语言
游戏编程之二 windows编程基础
游戏编程之二 windows编程基础
84 0
|
JSON 小程序 数据可视化
开发中难以解决的问题,你是如何另辟蹊径的
在以往的开发中,你遇到过难以解决的问题吗?或者咱们换个角度,面对产品经理提过来的,很难实现的需求,你是怎么处理的?又或者自己在研发某个功能时,遇到障碍,又是如何解决的?
113 0

热门文章

最新文章

相关实验场景

更多