【Gradle】Gradle之JVM进程详解

这篇具有很好参考价值的文章主要介绍了【Gradle】Gradle之JVM进程详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

个人主页:金鳞踏雨

个人简介:大家好,我是金鳞,一个初出茅庐的Java小白

目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作

我的博客:这里是CSDN,是我学习技术,总结知识的地方。希望和各位大佬交流,共同进步 ~

Gradle 是个程序、Groovy 是特定领域 DSL 语言

  • Gradle 是运行在 JVM 实例上的一个程序,内部使用 Groovy 语言。
  • Groovy 是一种 JVM 上的脚本语言,基于 java 扩展的动态语言。

Gradle 会把 .gradle 的 Groovy 脚本编译成 .class java字节码文件在 JVM 上运行,最终还是 java 来运行。

Grade的目录结构

打开 Gradle 文件目录,核心的 bin 文件就一个 gradle 脚本,这个脚本就是 Gradle 核心执行逻辑了,他 会启动一个 JVM 实例去加载 lib 中的各种函数去构建项目:

【Gradle】Gradle之JVM进程详解,Java全栈学习笔记,jvm,gradle,构建工具,Java,maven

【Gradle】Gradle之JVM进程详解,Java全栈学习笔记,jvm,gradle,构建工具,Java,maven

Gradle 使用到的JVM进程

 Gradle 构建工具在不同场景下会分别使用3个 JVM 进程:

  1. client
  2. Daemon
  3. wrapper

一、client 进程

client 进程是个轻量级进程,每次构建开始都会创建这个进程,构建结束会销毁这个进程。

client 进程的任务:查找并和 Daemon 进程通信

(1)Daemon 进程没启动,client 进程会启动一个新的 Daemon 进程

(2)Daemon 进程已经存在了,client 进程就给 Daemon 进程传递本次构建相关的参数任务,然后,接收 Daemon 进程发送过来的日志

gradle.properties 里面设置的参数、全局 init.gradle 初始化脚本的任务,这些都需要 client 进程 传递给 Daemon 进程

二、Daemon 进程

Daemon 进程负责具体的构建任务

我们使用 Android Studio 打包 APK 这依靠的不是 Android Studio 这个 IDEA 开发工具,而是 Gradle 构建工具自己启动的专门的一个负责构建任务的进程:Daemon

Daemon 进程 是一个守护进程,构建结束 Daemon 进程也不会销毁,而是会休眠, 等待下一次构建,这样做是为了节省系统资源,加快构建速度,Daemon 进程会缓存插件、依赖等资源。

注意:每一个 Gradle 版本都会对应一个 Daemon 进程,机器内若是运行过多个版本的 Gradle,那么机器内就会存在多个 Daemon 进程

Daemon 进程在以下情况时会失效,需要启动新的 Daemon 进程,判断 Daemon 进程是否符合要求是上面说 的 client 进程的任务:

  • 修改 JVM 配置会造成启动新的构建进程
  • Gradle 将杀死任何闲置了3小时或更长时间的守护程序
  • 一些环境变量的变化,如语言、keystore、keyStorePassword、keyStoreType 这些变化都会造成旧有的守护进程失效

即便是同一个版本的 Gradle,也会因为 VM 配置不同而存在多个相同 Gradle 版本的 Daemon 进程。比如同时启动好几个项目,项目之间使用的 Gradle 版本相同,但是 VM 使用的不同配置。

三、wrapper 进程

wrapper 进程啥也不干,不参与项目构建,唯一任务就是负责下载管理 Gradle 版本

我们导入 Gradle 项目进来,client 进程发现所需版本的 Gradle 本机没有,那么就会启动 wrapper 进程,根据 gradle.properties 里面的参数自行去 gradle-wrapper.jar 里面的下载程序去下载 Gradle 文件,完事wrapper 进程会关闭

【Gradle】Gradle之JVM进程详解,Java全栈学习笔记,jvm,gradle,构建工具,Java,maven

文章到这里就结束了,如果有什么疑问的地方,可以在评论区指出~

希望能和大佬们一起努力,诸君顶峰相见

再次感谢各位小伙伴儿们的支持!!!文章来源地址https://www.toymoban.com/news/detail-573846.html

到了这里,关于【Gradle】Gradle之JVM进程详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • jvm深入研究文档--java中的堆--详解!--jvm底层探索(1)

    JVM的内存分区包括以下几个部分: 堆区(Heap) - 这是JVM的主要部分,用于存储实例对象和大多数Java对象,如数组和用户定义的类。 方法区(Method Area) - 这是线程私有的,用于存放类对象(加载好的类)。 栈区(Stack) - 这是线程私有的,包括虚拟机栈和本地方法栈。虚拟

    2024年02月07日
    浏览(52)
  • jvm学习笔记

    从面试开始: 请谈谈你对JVM 的理解?java8 的虚拟机有什么更新? 什么是OOM ?什么是StackOverflowError?有哪些方法分析? JVM 的常用参数调优你知道哪些? 内存快照抓取和MAT分析DUMP文件知道吗? 谈谈JVM中,对类加载器你的认识? ​位置: JVM 是运行在操作系统之上的,它与硬

    2024年02月11日
    浏览(35)
  • 学习笔记-JVM

    JVM是运行在操作系统上的虚拟机,存在于JRE当中 HotSpot Sun公司 用的基本都是这个 JRockit BEA J9VM IBM JNI的作用 拓展java的使用,融合不同的编程语言为java所用 最初是C/C++ 因为最初java诞生的时候,市面上全是C/C++,java要想立足,必须有能调用C/C++的方法 于是在内存中设置了本地方法栈

    2024年02月06日
    浏览(54)
  • Jvm学习笔记(一)内存模型

    java不需要用户手动去管理内存的释放,这大大解放了程序员的心智负担,jvm运行的核心绕不开他的内存模型,本章着重于jvm的内存模型分析。 程序计数器是一块较小的内存区域,主要作用是确定下一条需要执行的字节指令(java执行的是字节指令),它是程序控制流的指示器

    2023年04月14日
    浏览(40)
  • JVM学习笔记(二)内存结构

    目录   一、JVM内存结构 1. 虚拟机栈(JVM Stacks) 1)定义 2)栈内存溢出 3) 线程运行诊断 案例1:CPU占用过高 案例2:程序运行很长时间没有结果​编辑 2. 本地方法栈(Native Method Stacks) 3.  堆(Heap) 1)定义 2)特点 3)堆内存溢出 4)堆内存诊断 5)案例:垃圾回收后,内存

    2024年02月16日
    浏览(36)
  • 学习笔记-JVM监控平台搭建

    SpringBoot Actuator 1 引入依赖 2 开启配置 3 访问 http://127.0.0.1:8888/actuator 4 提供的信息如下表 路径 描述 默认开启 /beans 显示容器的全部的Bean,以及它们的关系 Y /env 获取全部环境属性 Y /env/{name} 根据名称获取特定的环境属性值 Y /health 显示健康检查信息 Y /info 显示设置好的应用信

    2024年02月13日
    浏览(40)
  • JVM——Java虚拟机详解

    JVM——Java虚拟机,它是Java实现平台无关性的基石。 Java程序运行的时候,编译器将Java文件编译成平台无关的Java字节码文件(.class),接下来对应平台JVM对字节码文件进行解释,翻译成对应平台匹配的机器指令并运行。 同时JVM也是一个跨语言的平台,和语言无关,只和class的文

    2024年01月19日
    浏览(84)
  • JVM——Java 内存区域详解

    如果没有特殊说明,都是针对的是 HotSpot 虚拟机。 基本问题 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针两种方式) 拓展问题 String 类和常量池 8 种基本

    2024年02月13日
    浏览(43)
  • JVM(Java虚拟机)详解

    目录 一、JVM内存区域划分   1. 什么是内存区域划分以及为啥要进行区域划分   2. JVM内存区域划分详解   3. 堆区详解:    4. 给一段代码,问某个变量是在那个区域上? 二、JVM类加载机制   1.类加载的过程   2. 类加载的时机   3. 双亲委派模型(经典面试) 三、JVM垃圾回收

    2024年02月15日
    浏览(66)
  • Java JVM 堆、栈、方法区详解

    目录 1. 栈 2. 堆 3. 方法区 4. 本地方法栈 5. 程序计数器 首先来看一下JVM运行时数据区有哪些。 在介绍JVM栈之前,先了解一下  栈帧  概念。 栈帧:一个栈帧随着一个方法的调用开始而创建,这个方法调用完成而销毁。栈帧内存放者方法中的局部变量,操作数栈等数据。 Jav

    2024年01月19日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包