博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java虚拟机之JVM系统和内存模型
阅读量:5273 次
发布时间:2019-06-14

本文共 929 字,大约阅读时间需要 3 分钟。

1、类加载子系统

  负责从文件系统或者网络中加载Class信息,加载的信息存放在一块称之为方法区的内存空间里。

2、方法区

  存放类信息、常量信息、常量池信息、包括字符串字面量和数字常量等,方法区的大小决定了系统可以保存多少个类。方法区可以理解为永久区(Perm)。

3、Java堆

  在Java虚拟机启动的时候建立java堆,它是java最主要的内存工作区域,几乎所有的对象实例都存放到java堆中,堆空间是所有线程共享的。

4、直接内存

  Java的NIO库允许Java程序使用直接内存,从而提高性能,通常直接内存速度会优于java堆,读写频繁的场合可能会考虑使用。

5、Java栈

  每个虚拟机线程都有一个私有的栈,一个线程的java栈在线程创建的时候被创建,java栈中保存着局部变量、方法参数、java的方法调用、返回值等。一个栈一般由三个部分组成:局部变量表、操作数和帧数据区。

6、本地方法栈

  任何本地方法接口都会使用某种本地方法栈。当线程调用Java方法时,虚拟机会创建一个新的栈帧并压入Java栈。然而当它调用的是本地方法时,虚拟机会保持Java栈不变,不再在线程的Java栈中压入新的帧,虚拟机只是简单地动态连接并直接调用指定的本地方法。当地方法接口需要回调Java虚拟机中的Java方法,在这种情况下,该线程会保存本地方法栈的状态并进入到另一个Java栈。

7、垃圾回收系统

  负责回收已经无用的对象的内存空间,从而避免内存渗漏体的产生,节省内存资源,避免程序代码的崩溃。

8、PC寄存器

  每个线程启动的时候,都会创建一个PC(Program Counter,程序计数器)寄存器。PC寄存器里保存有当前正在执行的JVM指令的地址。 每一个线程都有它自己的PC寄存器,也是该线程启动时创建的。保存下一条将要执行的指令地址的寄存器是 :PC寄存器。PC寄存器的内容总是指向下一条将被执行指令的地址,这里的地址可以是一个本地指针,也可以是在方法区中相对应于该方法起始指令的偏移量。

9、执行引擎

  负责code的执行。

 

 

转载于:https://www.cnblogs.com/yang75n/p/8416230.html

你可能感兴趣的文章
mysql 8.0 zip包安装
查看>>
awk 统计
查看>>
模板设计模式的应用
查看>>
实训第五天
查看>>
平台维护流程
查看>>
2012暑期川西旅游之总结
查看>>
Linux发行版的排行
查看>>
12010 解密QQ号(队列)
查看>>
2014年辛星完全解读Javascript第一节
查看>>
装配SpringBean(一)--依赖注入
查看>>
java选择文件时提供图像缩略图[转]
查看>>
方维分享系统二次开发, 给评论、主题、回复、活动 加审核的功能
查看>>
Matlab parfor-loop并行运算
查看>>
string与stringbuilder的区别
查看>>
2012-01-12 16:01 hibernate注解以及简单实例
查看>>
iOS8统一的系统提示控件——UIAlertController
查看>>
PAT甲级——1101 Quick Sort (快速排序)
查看>>
python创建进程的两种方式
查看>>
1.2 基础知识——关于猪皮(GP,Generic Practice)
查看>>
迭代器Iterator
查看>>