程序计数器(寄存器)

本文解释了Java源代码编译后,JVM指令执行中的ProgramCountRegister的作用,它是一个线程私有的计数器,用于跟踪每个线程的指令地址。由于其内容少且不涉及大量内存,因此避免了内存溢出。同时,时间片的概念被用来管理多任务并发,确保公平分配CPU资源,提高系统性能。
摘要由CSDN通过智能技术生成

Program Count Register程序计数器(寄存器)

    java源代码经过编译,变成jvm指令

    作用:    在jvm指令的执行过程中,记录下一个指令的执行地址,一条一条执行


    特点:    
        线程私有    :    
            在多个线程时,会分配时间片,
            线程1在时间片内未执行完会暂存线程1,
            然后执行线程2的代码,如果也在时间片内没有执行完,会暂存线程2,继续执行线程1..

            
            
            其中暂存的是存储下一个jvm指令执行的地址,存在对应线程计数器中,不同线程单独存放
            并且每一个线程有属于自己的程序计数器,存自己要执行的命令

        不会内存溢出:    因为程序计算器所维护的只是下一条待执行的命令的地址,内容很少就一条
                所以不存在OutOfMemoryError,没有内存溢出

    

相关概念:


    时间片:
        操作系统分配给正在运行的进程/线程的一段CPU时间,用来实现多任务的并发执行。
        时间片通常很短,如几毫秒到几百毫秒,这样用户就感觉不到程序之间的切换。
        时间片的分配由操作系统内核调度程序决定,会考虑进程/线程的优先级、交互、资源需求等因素
        时间片的长度和分配策略会影响系统的性能和响应速度。

    为什么要有时间片:
        因为CPU的速度远高于其他设备,如内存、磁盘、网络等,
        如果没有时间片,CPU就会一直等待一个进程或线程完成它的所有任务,其他进程或线程
        会被饿死,无法得到运行机会。会造成CPU资源的浪费以及降低系统的性能和用户的体验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值