jvm_虚拟机组成部分概述

JAVA虚拟机的组成部分

大体上分为9部分:

1. 类加载子系统: 负责从文件系统或者网络中加载Class信息,对类做加载

2. 方法区: 静态的常量,也称之为永久区,

3. java堆: java堆就是对象,

4. 直接内存: direct 使用NIO操作的时候会直接操作这块,Java的NIO库允许JAVA程序使用直接内存,从而提高
   性能,通常使用直接内存会优于JAVA堆,读写频繁的场合可能会考虑使用.

5. java栈:就是变量,每一次启动Thread线程的时候,它都会有一个栈,有的时候会报异常,有的时候会报栈
   过深,比如你做一个递归调用的时候,总会有一个栈太深的时候,递归的次数太多了,栈总是有一个深度的,
   这和你栈分配的大小是有直接关系的,一个线程的java栈在创建的时候会被创建,也就是线程被创建的时候
   栈被创建,JAVA栈保存一些局部变量,你声明一些局部变量,有一些什么int东西,方法的参数,包括方法的调用,
   返回值等等.

6. 本地方法栈:基本上没有什么用,本地方法栈最大的不同是JAVA虚拟机允许JAVA直接调用本地方法(通常使用
   C编写)

7. 垃圾回收系统: JAVA GC, Garbage Collection 垃圾回收系统,各种各样的垃圾收集器,这是JAVA虚拟机
   必不可少的一个东西,有的时候你必须了解垃圾回收器,包括里面的算法,包括一些常用的垃圾回收器的机制,
   它是以什么的目标来设计的,

8. PC寄存器":(Program Counter)寄存器也是每个线程私有的空间,JAVA虚拟机会为每个线程创建PC寄存器,
   寄存当前执行环境的指针,程序计数器,操作指针,计算的变量指针,存一些指针的,计数,用来计数的.就在你
   JAVA跑的过程中,他想要计数的一些事情,环境变量指针这些东西,就是用PC寄存器去做了,他也是虚拟机
   必不可少的一个部分,当然问的比较少,没什么意义,JAVA程序员根本就不需要做指针这一块,JAVA程序员
   根本就不需要考虑这一块,

9. 执行引擎:执行java代码的,虚拟机最核心的就是执行引擎了,它负责执行虚拟机的执行码,类加载子系统给你
   加载好了之后,直接通过执行引擎去执行

大体上我们的JAVA虚拟机分这么9块,比较重要的有:第1块java堆,第2块垃圾回收系统,就这两块有意义,所有其他

的了解即可

方法区:就是存放类信息,常量信息,常量池信息,包括字符串字面量和数字常量等.

JAVA堆:堆空间是所有线程共享的

这9块区域我们只介绍大概的概念,重点要说明的就是堆,栈,方法区3个概念开始说起了,首先我们自己来看一下

堆,栈,方法区这三块,堆是解决数据存储的问题,即数据怎么放,放在哪儿,你写程序而言,new 一个什么对象,

那这个对象到了哪儿,那这个是在JAVA堆里面可以帮你解决的,栈解决是程序运行的问题,即程序如何执行,

或者说如何处理数据,方法区则是辅助堆栈的一块永久区(Perm),解决堆栈信息的产生,是一个先决条件,你要

new 一个对象,连这个user都不知道怎么找你怎么new这个user,你一定要从永久区去把user模板的class给我

弄出来,然后实例处理来一个实例对象,然后对应的user的引用就放在栈里面,基本上这就是三块内容
比如我现在有一个u1实例和一个u2实例,我们都是通过方法区或者是永久区的一个类User类以及方法实现

这里肯定是一块在方法区存放的,比如现在想通过方法区的类创建两个实例对象的话,那首先这两个实例对象

那u1实例和u2实例肯定是放在JAVA堆中的,有两块的内存,然后在栈里面也会有各自的引用,这个就是简单方法区

的一个描述吧,无非就是这么3块,这就相当于永久区存放的类,常量等等,一个模板的信息

你要是要实例化对象你就把对象放在堆里面,你外边如果想使用必须有一个引用,引用则必须放在栈里面,

user 你必须写第一段代码, User u = new User(); 首先这个大小的User是哪里来的,首先它是一个class,

肯定是放在Perm用就去里面的,然后真正去调用new操作的时候,是不是相当于把这个对象给new这个对象,

简单介绍完JAVA里面的这几个部分,以及简单的了解了JAVA里面的这个堆,栈,方法区,这三块都是做什么事情的,

当然只是简单了解一下,然后我们再讲一下JAVA堆里具体是一个什么样的堆结构.

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值