目录:
1.jvm简书
2.Jvm模型
3.jvm对象模型
4.jvisualvm监控线程
5.jvm实例
6.jvm数据模型
7.jvm看这一篇就够了
8.讲一下jvm
9.jvm可达性分析怎么实现的
10.谈谈jvm
1.jvm简书
定义线程是操作系统的最小调度单位,包含于进程一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程可以并行执行不同的任务与进程的不同进程是操作系统资源分配的最小单位,线程是操作系统执行的最小单位;。
2.Jvm模型
进程包含线程,一个进程可以包含多个线程,同一个进程中的不同线程共享同一资源(此处会引发另一个问题,线程不可见问题);进程是指一段程序的执行过程,线程指的是进程中一个单一顺序的控制流(任务);线程分类线程主要分为两种
3.jvm对象模型
内核线程,简称KLT(Kernel Level Thread)用户线程,简称ULT(User Level Thread)内核线程系统内核管理线程,内核保存线程的状态和上下文,线程阻塞不会引起进程阻塞在多处理器上,多线程在多处理器上并行运行。
4.jvisualvm监控线程
线程的创建、调度和管理等生命周期是由内核直接管理完成,效率比ULT要低,比进程要高
5.jvm实例
内核线程内核空间会维护[进程表]和[线程表]进程表中维护并管理进程[运行的程序代码]集合线程维护并管理各个进程中的线程集合线程阻塞,其所在的进程不会阻塞内核线程和轻量级进程(Light Weight Process,LWP,是使用内核线程的一种高级接口)是一对一模型,这个文章后面会有介绍。
6.jvm数据模型
优缺点优点:可以将复杂的线程生命周期的管理任务交给操作系统,编程和实现简单;线程维护在操作系统内核,线程阻塞不会阻塞进程;如果机器是多核处理器,内核线程可以充分利用多核处理器进行并行运行线程缺点:当线程进行调度、创建等,会涉及到用户态和内核态之间的转化以及线程上下文的切换,资源消耗大、效率较低。
7.jvm看这一篇就够了
用户线程用户程序实现,不依赖操作系统内核,应用提供创建、调度和管理线程的函数来控制用户线程。不需要用户态/核心态切换,速度高、效率高。内核对ULT无感知,线程阻塞则进程(包含它的所有线程)阻塞。
8.讲一下jvm
用户线程内核空间会维护[进程表]进程表中记录进程[运行的程序代码]集合线程阻塞,其所在的进程也会阻塞操作系统内核无法感知用户线程,对于线程的创建、调度、撤销等无感知优缺点优点:由于操作系统内核无法感知用户线程,对于线程的创建、调度、撤销等无感知。
9.jvm可达性分析怎么实现的
所以当线程进行调度、创建等,不会涉及到用户态和内核态之间的转化以及线程上下文的切换,资源消耗小、效率较高缺点:需要维护复杂的线程生命周期,编程和实现复杂;线程维护在进程中,内核无感知,线程阻塞会阻塞整个进程(包含整个进程的其他线程);用户线程不能充分利用多核处理器进行并行运行线程,只能在单个核中运行。
10.谈谈jvm
线程模型线程模型主要分为三种一对一模型多对一模型多对多模型一对一模型一对一模型 简易
一对一模型 简易用户空间的一个线程(应用程序的线程概念)对应内核的一个线程,1:1用户空间的线程通过LWP(属于用户空间)对内核线程进行创建、销毁等操作由于每个线程的创建、调度、销毁都需要内核的支持,每次线程的创建、切换都会涉及用户状态/内核状态的切换,性能开销比较大,并且单个进程能够创建的LWP的数量是有限。
能够充分利用多核的优势一对一模型
一对一模型用户进程可以创建多个(有限个)LWP对内核线程进行管理(包含创建、销毁等生命周期的方法),本质上还是操作系统进行的管理KLT是实际的计算运行的线程,在内核空间,由操作系统内核进行管理维护(创建、调度、销毁等)。
严格意义上,LWP是属于操作系统层面的一对一模型 详细
一对一模型 详细JVM进程中通过new Thread(Runnable/Callable)创建Java层面的线程Java线程通过库调度器调用LWP的接口创建、销毁内核线程等内核线程是由操作系统内核进行管理维护。
注:About LWP其实LWP(轻量级进程)是操作系统提供的操作内核线程的入口(接口),属于中间层在Linux操作系统中,往往都是通过fork函数创建一个子进程来代表内核中的线程,在fork完一个子进程后,还需要将父进程中大部分的上下文信息复制到子进程中,消耗大量cpu时间用来初始化内存空间,产生大量冗余数据。
为了避免上述情况,轻量级进程(Light Weight Process, LWP)便出现了,其使用clone系统调用创建子进程,过程中只将部分父进程数据进行复制,没有被复制的资源可以通过指针进行数据共享,这样一来LWP的运行单元更小、运行速度更快。
LWP与内核线程一一映射,每个LWP都由一个内核线程支持LWP可以被普通进程创建,有父子进程的关系。多对一模型多对一模型 简易
多对一模型 简易一个内核线程可以对应多个用户线程,即跟用户线程相匹配用户线程的创建、调度、销毁不需要内核的支持,所以也就不涉及上下文切换的资源损耗,效率通常较高但是内核无法感知到用户线程(只能感知到用户空间的进程),所以当一个进程中的一个线程阻塞,将会导致整个进程都阻塞。
由于内核感知的是应用进程,所以进程中的多线程只能是运行在单个运算核上,无法充分利用计算性能并行计算,当然如果机器是单核就另当别论了;多对一模型
多对一模型此时内核直接管理进程,所有的资源类操作都是通过进程进行代为转发与内核进行通信,所谓的一直对外?多对多模型多对多模型 简易
多对多模型 简易这个模型其实就是一个混合的线程模型LWP和内核是1:1对应关系(LWP需要内核的支持才能工作,fork等函数)用户线程和LWP是n:1(n>0)对应关系由于用户进程和LWP(可以理解为内核线程)是n:m的关系,所以即解决了1:1模型中性能开销及线程数量的问题,也解决了N:1模型中阻塞问题,同时也能充分利用CPU的多核优势。
多对多模型
多对多模型1.此模型是大部分协程实现的基础。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容