栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JVM总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JVM总结

一、JVM是什么?

JVM 是一个虚拟机,相当于一个翻译软件,能够屏蔽掉我们对于操作系统和硬件设备的感知,从而实现“跨平台”

二、JVM的组成

1.类加载器 (和类加载相关)
2.执行引擎(解释执行字节码)
3.动态内存管理器(和垃圾回收相关)

三、JVM的内存划分

JVM的内存来自于操作系统,JVM启动之后就会从操作系统申请一大块内存,再针对这个内存划分出一些区域。划分成的区域如下:
1.堆(运行时常量池,在1.8中也是堆)

  • 构造的对象存放在堆中

2.方法区

  • 加载好的类
  • 静态成员

3.栈(JVM栈/本地方法栈)

  • 局部变量

4.程序计数器

  • 存放地址,描述当前线程接下来要执行的指令在内存的哪个地方

注意:
一个java进程中,可能包含多个线程,多个线程之间,共用同一份堆和方法区,每个线程都有自己的栈和程序计数器。
每个进程有自己的堆,多个进程之间不共享。

Test t = new Test()
t 的引用是在堆上还是在栈上呢?
不确定
决定某个变量在对上还是在栈上,和这个变量是基础类型还是引用类型无关,和这个变量是局部变量还是成员变量还是静态变量有关。

四、常见题目 1.如何理解基础数据类型和引用数据类型

指针就是个变量,里面存的是整数,这个整数表示内存中的地址。引用本质上就是个指针,引用里也是存的整数,含义也是内存中的地址。
以下通过画图的方式来解释基础数据类型和引用数据类型。
a)定义一个变量a:int a = 10,那么基础类型变量中对应的内存空间,直接保存了该值。

b)A a = new A() 引用类型变量中对应的内存空间保存的是另一个内存区域的地址(对象本体的地址),借助地址,可以简介的找到对象本体。

2.怎么理解引用和对象

引用存放的是地址,对象是本体,还是以实例化A为例子。

3.怎么理解局部变量、成员变量、静态变量

a)局部变量在栈上

b)成员变量在堆上

c)静态变量在方法区上

4.static 方法和普通方法之间的区别
  1. 普通方法中有this关键字,和实例相关,普通方法也叫实例方法。
  2. static方法中没有this,和类线管,和实例无关,静态方法也叫类方法。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号