JVM内存结构--深入理解JVM内存结构,熟练GC垃圾回收机制,可以进行简单的JVM调优

目录

JVM内存结构

1、Class Loader 类加载器

2、Native Interface

3、Method Area方法区

4、PC Register 程序计数器

5、Native Method Stack 本地方法栈

JVM内存结构

1、Class Loader类加载器

2、Execution Engine 执行引擎负责解释命令,提交操作系统执行

3、Native Interface 本地接口

4、Runtime Data Area 运行数据区

1、Class Loader 类加载器

负责加载class文件,class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文件的加载,至于它 是否可以运行,则由Execution Engine决定。

2、Native Interface

本地接口的作用是融合不同的编程语言为Java所用,它的初衷是融合C/C++程序,Java 诞生的时候是C/C++横行的 时候,要想立足,必须有调用C/C++程序,于是就在内存中专门开辟了一块区域处理标记为native的代码(标识是C/C++编写),它的具 体做法是Native Method Stack中登记native方法,在Execution Engine执行时加载native libraies。目前该方法使用的越来越少了,除非是与硬件有关的应用,比如通过Java程序驱动打印机,或者Java系统管理生产设备,在企业级应用中已经比较少见。因为现在的异构领域间的通信很发达,比如可以使用Socket通信,也可以使用Web Service等等, 不多做介绍。

3、Method Area方法区

方法区是被所有线程共享,所有字段和方法字节码,以及一些特殊方法如构造函数,接口代码也在此定义。简单 说,所有定义的方法的信息都保存在该区域,此区属于共享区间。 静态变量+常量+类信息+运行时常量池(JDK1.6)存在方法区中 实例变量存在堆内存中保存。

4、PC Register 程序计数器

每个线程都有一个程序计数器,就是一个指针,指向方法区中的方法字节码(下一个将要执行的指令代码),由执行 引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不记。

程序计数器(Program Counter,PC)是一种用于存储当前指令地址的寄存器。它在计算机体系结构中起着重要的作用,用于指示下一条要执行的指令的位置

多线程是指在一个进程中同时运行多个线程每个线程可以独立执行不同的任务。多线程的主要优势是可以提高程序的并发性和响应性。

程序计数器与多线程之间存在紧密的关系。在多线程环境中,每个线程都有自己独立的程序计数器。当一个线程被调度执行时,它的程序计数器会指示下一条要执行的指令的位置当线程被切换到另一个线程时该线程的程序计数器会保存当前执行位置并将控制权交给下一个线程。当线程再次被调度执行时,它的程序计数器会恢复到之前保存的位置,从而继续执行。

通过使用独立的程序计数器,多线程可以实现并发执行,每个线程都可以独立地执行不同的指令序列。这种并发执行可以提高程序的性能和响应性,使得多个任务可以同时进行。同时,程序计数器的保存和恢复操作也保证了线程切换时的正确性和一致性。

5、Native Method Stack 本地方法栈

它的具体做法是Native Method Stack中登记native方法,在Execution Engine执行时加载native libraies。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值