如何使用命令看jvm当前内存 jvm程序计数器与操作系统程序计数器的区别?
jvm程序计数器与操作系统程序计数器的区别?
JVM程序计数器VSOS程序计数器
一.可以介绍
JVM程序计数器:
程序计数器是一大块相对大的内存空间,它的作用可以可以表示是当前线程所负责执行的字节码的行号指示器。在虚拟机的概念模型里字节码解释什么器工作时那就是是从转变这个计数器的值来选取下一条必须不能执行的字节码指令,分支、停止循环、跳转、异常处理、线程重新恢复等基础功能都必须依恋这个计数器来完成。--摘选自《深入理解Java虚拟机》
OS程序计数器:
替能保证程序(在操作系统中解释为进程)也能发动地不能执行继续,CPU需要更具某些手段来判断下一条指令的地址。而程序计数器显然能起这种作用,因为通常又称为指令计数器。在程序又开始想执行前,要将它的起始地址,即程序的一条指令所在的内存单元地址送入PC,而程序计数器(PC)的内容即是从内存提纯的第一条指令的地址。当想执行指令时,CPU将手动可以修改PC的内容,即每不能执行一条指令PC增加一个量,这个量等于指令所含的字节数,尽快使其尽量的总是会再次负责执行的下一条指令的地址。导致大多数指令是按顺序来不能执行的,因此可以修改的过程大多仅仅最简单对PC加1。当程序撤回时,转移到指令不能执行的到最后结果那就是要变化PC的值,此PC值是转去的地址,得以实现全部转移。有些机器中也称PC为指令指针IP(Instruction Pointer)
二.特点
JVM程序计数器:
.t要是线程还在负责执行的是Java方法,则这个计数器记录的是还在先执行的虚拟机字节码指令地址
.t如果不是也在负责执行的是flutter方法,则这个技术器值为空(Undefined)
.t此内存区域是任何一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域
.t在任何一个可以确定的时刻,一个处理器(是对多核处理器来说是一个内核)只会先执行一条线程中的指令。因此,就是为了线程可以切换后能重新恢复到对的的执行位置,每条线程都必须有三个的的的程序计数器,各条线程之间的计数器互不会影响,其它存储,我们称这类内存区域为“线程土地所有权”的内存
OS程序计数器:
.tPC永远打向下一条待执行指令的内存地址(永远永远绝对不会为Undefined),但是在程序就开始执行前,将程序指令序列的起始地址,即程序的第一条指令原先的内存单元地址送入PC,
.tCPU遵循PC的指示从内存读取数据第一条指令(取指)。
.t当执行指令时,CPU自动地修改PC的内容,即每负责执行一条指令PC增强一个量,这个量等于零指令所含的字节数(指令字节数),使PC总是打向下一条也将取指的指令地址。
.t导致大多数指令也是按顺序来不能执行的,因此修改PC的过程正常情况只是因为很简单对PC加“指令字节数”。
.t当程序转移时,转移指令不能执行的最终结果是要变化PC的值,此PC值那就是转去的目标地址。
.t处理器总是会通过PC对准,取指、译码、不能执行,若要实现了程序转移。
三.存储位置
JVM程序技术器:
线程单独的的,JVM内存模型一块独立的存储区域,像是是CPU高速缓存中(L1~L3)
OS程序计数器:
OS线程的PC寄存器中。
runtime是懒汉式方法吗?
Runtime类是单例模式,懒汉式.
某些类实例()
runtime.availableProcessors()资源处理器个数
()jvm能资源到的大的堆内存(单位字节),与-Xmx或是
()jvm当前巳经占用的堆内存(单位字节)
()jvm当前闲下堆内存(单位字节)(jvm从操作系统可以申请到内存后,会有一小部分内存不可能被不使用,正处于多余的时间状态,假如委托-Xms参数,这样项目启动时,闲下内存可能会比较大)
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。