Android基础学习(十九)—— 进程与线程

news2024/11/20 12:22:59

1、进程

程序和进程的区别:(1)程序是静态的,就是存放在磁盘里的可执行文件,就是一系列的指令集合;(2)进程是动态的,是程序的一次执行过程,同一程序多次执行会对应多个进程。

(1)进程是系统进行资源分配的一个独立单位

(2)进程的组成:从结构上看,进程由 PCB、程序段、数据段 组成

  • ① PCB【Process Control Block,进程控制块】

    包括:进程描述信息、进程控制和管理信息、资源分配清单、处理机相关信息等

    不同状态的进程(就绪、阻塞)的PCB被用链接或索引方式组织起来,以方便系统对进程的调度和管理:

  • ② 程序段

    程序的代码(指令序列)。注意:多个进程可运行同一个程序

  • ③ 数据段

    运行过程中产生的各种数据

运行程序:


(3)进程的特征

  • 动态性:进程是程序的一次执行过程,是动态地产生、变化、消亡的
  • 并发性:内存中有多个进程实体(可理解为进程在执行过程中某一时刻的一个快照或状态),各进程可并发执行;
  • 独立性:进程可独立运行、独立获得资源;
  • 异步性:各进程按各自独立的,不可预知的速度推进;
  • 结构性:每个进程都会配置一个PCB,从结构上看,进程由PCB、程序段、数据段组成;

2、线程

(1)线程是一个基本的CPU执行单元,也是程序执行流的基本单位。线程使得一个进程内可并发处理各种任务。

(2)组成:由线程ID、程序计数器、寄存器集合 和 堆栈 组成

(3)线程可分为 用户级线程 和 内核级线程

在Hotspot(Oracle对于JVM的实现)中,线程模型是“一对一模型”,即上图中的内核级方式。

3、JVM中的进程与线程

程序员运行Java程序启动一个JVM进程:

运行一个Java程序 及 JVM运行时数据区内存结构:

其中,方法区

“加载“ 阶段(虚拟机类加载的第一个阶段)结束后,Java虚拟机外部的二进制字节流就按照虚拟机所设定的格式存储在方法区中了,方法区中的数据存储格式完全由虚拟机实现自行定义的,《Java虚拟机规范》未规定此区域的具体数据结构。类型数据妥善安置在方法区之后,会在Java堆内存中实例化一个java.lang.Class类的对象(类加载与Class对象),这个对象将作为程序访问方法区的类型数据的外部接口。

方法区中存储已经被虚拟机加载的以下信息:

  • ① 类型信息

    全限定类名、访问修饰符、字段信息、方法信息、字节码指令(即代码)

  • ② 常量

    存放编译期生成的各种字面量与符号引用。

    常量存放在运行时常量池中【运行时常量池:原本记录在Class文件中的常量池,此时被加载到方法区中,称为运行时常量池。常量池中每一项常量都是一个表,截至JDK13,常量池表中有17中不同类型的常量(如整型字面量、类或接口的符号引用、字段的符号引用等)】。

    1)字面量:更接近于 Java 语言层面的常量概念,如文本字符串、被声明为 final 的常量值等;

    2)符号引用:属于编译原理方面的概念,主要包括下面几类常量:

    • 被模块导出或者开放的包(Package)
    • 类和接口的全限定名
    • 字段的名称和描述符
    • 方法的名称和描述符
    • 方法句柄和方法类型
    • 动态调用点和动态常量
  • ③ 静态变量

    类变量,即被 static 修饰的变量。

    在 JDK 7 及 之前,HotSpot 使用永久代来实现方法区时,类变量所使用的内存在 ”准备“ 阶段(虚拟机类加载的一个阶段)分配并设置类变量初始值(零值);而在 JDK 8 及 之后,类变量则会随着 Class 对象一起存放在 Java 堆中,这时候 ”类变量“ 在方法区就完全是一种逻辑概念的表述。

  • ④ 即时编译器编译后的代码缓存

注意:方法区的变更:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/76944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

物联网开发笔记(58)- 使用Micropython开发ESP32开发板之控制2.90寸电子墨水屏模块

一、目的 这一节我们学习如何使用我们的ESP32开发板来控制2.90寸电子墨水屏模块。 二、环境 ESP32 2.90寸 电子墨水屏模块 Thonny IDE 几根杜邦线 接线方法: 三、墨水屏驱动 此处注意注意:不同的型号、不同厂家的墨水屏驱动方式有些不同,…

VIIF:自监督:自适应:GAN

Self-supervised feature adaption for infrared and visible image fusion (红外和可见光图像融合的自监督特征自适应) 总述:首先,我们采用编码器网络来提取自适应特征。然后,利用两个具有注意机制块的解码器以自我…

【扫描PDF】如何将颜色淡的扫描PDF颜色变深,便于阅读??PDF中文字太淡怎么加深?汇总网上已有的方法,一波小结

一、问题背景 如果你扫描得到的PDF,像下图一样文字颜色非常淡,看起来不舒服,需要加深处理,就烦请看我下面的几个解决方法,都是从网上汇总得到,加上自己的实践和体会总结。 二、Adobe Acrobat DC PDF扫描…

20221209英语学习

今日新词: receiver n.收受者; 收件人; 接待者; (电话)听筒, 耳机; 收音机; (电视)接收机; 接收器; 接球手 annoy n.同“annoyance” delight n.快乐,愉快 railroad n.铁路, 铁道, 铁路公司, 铁路系统 brilliance n.光辉, 【光】辉度, 漂亮, (名声)…

3.IOC之注解配置

1.编写Spring框架核心配置文件applicationContext.xml 在项目目录“/src/main/resources”下新建applicationContext.xml文件&#xff0c;具体代码如下。 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework…

Google如何增加外链?谷歌外链自动化靠谱吗?

Google如何增加外链&#xff1f; 答案是&#xff1a;循序渐进增加免费开放性注册的外链和GPB外链 我们在发布Google外链的时候&#xff0c;总想找捷径&#xff0c;通过软件工具自动发布外链来提高网站排名和流量&#xff0c;加快SEO优化进度&#xff0c;缩短时间成本&#xf…

ChatGPT:构建与人类聊天一样自然的机器人

ChatGPT&#xff1a;构建与人类聊天一样自然的机器人 —— ChatGPT 文章目录ChatGPT&#xff1a;构建与人类聊天一样自然的机器人 —— ChatGPT1 官网2 注册OpenAI账号3 使用ChatGPT3.1 普通聊天3.2 生成代码3.3 写诗3.4 解一道算法题4 ChatGPT中文版VsCode 插件5 一些体会Hi&a…

浅析即时通讯开发之RTMP数据传输协议的实时流媒体

近年来,随着网络带宽的提升,以及多媒体压缩编码技术的发展,流媒体技术得到了非常广泛的应用。全球的流媒体市场正在以极高的速度向前发展,并逐步取代了以文本和图片为主的传统互联网。根据Cisco的VisualNetworkingIndex(VNI)统计,2005年流媒体流量仅占全球互联网总流量的5%,而到…

【玩转c++】c++模板和泛型编程

本期主题&#xff1a;c模板和泛型编程博客主页&#xff1a;小峰同学分享小编的在Linux中学习到的知识和遇到的问题小编的能力有限&#xff0c;出现错误希望大家不吝赐身为程序员&#xff0c;不会有人没女朋友吧&#xff01;&#xff01; 目录 &#x1f341;1.泛型编程 &#x…

ChatGPT 是何方神圣?为什么这么猛?

哈喽&#xff0c;大家好&#xff0c;我是木易巷&#xff01; 本篇文章给大家介绍一下这个很猛的玩意&#xff1a;ChatGPT &#xff01;&#xff01;&#xff01; 什么是ChatGPT &#xff1f; 在12月初&#xff0c;人工智能实验室OpenAI发布了一款名为ChatGPT的自然语言生成式…

【Pytorch】第 5 章 :解决多臂老虎机问题

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

web期末网站设计大作业 HTML+CSS+JS仿爱奇艺官网影视网站

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

《Linux运维实战:使用Percona Backup for MongoDB物理备份与恢复Mongodb数据》

一、备份与恢复方案 Percona Server for MongoDB Percona Server for MongoDB是一个免费的、增强的、完全兼容的、源代码可用的、带有企业级功能的MongoDB Community Edition的替代品。它不需要对MongoDB应用程序或代码进行更改。 参考官方&#xff1a;Percona Backup for Mon…

我的博客系统[Servlet]

目录 后端程序 1. 需求分析 2. 概要设计 3. 编写数据库操作的代码 3.1.使用maven,引入依赖 3.2 封装 数据库的 DataSource 3.2.1 使用单例模式,把数据库的 DataSource 和 建立连接 还有 断开连接也给封装进去 3.2.2 创建实体类 3.2.3 针对这两个实体类涉及到的 增删改…

近期Java杂项问题

Data不会为static变量提供get/set。 Data不会为final变量提供set。 ConfigurationProperties加载static静态属性为null的问题 解决&#xff1a;ConfigurationProperties默认是调用非static Setter方法&#xff0c;把静态的Setter方法的static去掉就可以了 Value注入静态属性 解…

RK3568平台开发系列讲解(系统优化篇)排查卡顿的工具介绍

🚀返回专栏总目录 文章目录 一、Traceview二、Nanoscope三、systrace四、Simpleperf沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Android底层基于 Linux 内核,像 systrace、Simpleperf 也是利用 Linux 提供的机制实现,因此学习一些 Linux 的基础知识,对于理解这…

D-Wave最新调研!量子计算商业活动和投资不断增长

&#xff08;图片来源&#xff1a;网络&#xff09; 加拿大量子计算公司委托高性能计算分析机构Hyperion Research进行了一项研究&#xff0c;以更好地了解量子计算 (QC) 的商业早期采用者所面临的挑战和机遇。这项研究调查了全球范围内的300家目前接触量子计算的企业&#xff…

计算机组成大题分析(六)

假定计算机的主频为 500MHz &#xff0c;CPI 为4。现有设备A 和 B&#xff0c;其数据传输率分别为2MB/s 和 40MB/s &#xff0c;对应 I/O 接口中各有一个 32 位数据缓冲寄存器。请回答下列问题&#xff0c;要求给出计算过程。 (1) 若设备 A 采用定时查询 I/O 方式&#xff0c;每…

为什么说函数组件要比类组件好呢,函数组件和类组件的区别你都清楚吗

一、类组件 类组件&#xff0c;顾名思义&#xff0c;也就是通过使用ES6类的编写形式去编写组件&#xff0c;该类必须继承React.Component 如果想要访问父组件传递过来的参数&#xff0c;可通过this.props的方式去访问 在组件中必须实现render方法&#xff0c;在return中返回…

详解c++---类和对象(四)

这里写目录标题const成员再谈构造函数为什么会有初始化列表第一个问题第二个问题第三个问题初始化列表的使用方式即注意事项explicit关键字static成员static修饰类中的变量一些性质static修饰成员函数友元友元函数友元类内部类匿名对象拷贝对象时的一些编译器优化const成员 在…