高频面试题4:关于JVM,你了解多少?

Java vitual machine,是一种能够运行java字节码(.class文件)的虚拟机。

一、JDK1.8  JVM运行时内存(高薪必问)

程序计数器:线程私有的(每个线程都有一个自己的程序计数器),是一个指针。代码运行,执行命令。注意:每个命令的执行都有行号标记,程序计数器会标识当前命令执行到多少行了。记录代码执行的位置。

Java虚拟机栈:线程私有的(每个线程都有一个自己的Java虚拟机栈)。一个方法运行,就会给这个方法创建一个栈帧,栈帧入栈执行代码,执行完毕之后弹栈,保存对象引用类型、基本数据类型。

本地方法栈:线程私有的(每个线程都有一个自己的本地方法栈),和Java虚拟机栈类似,java虚拟机栈加载的是普通方法,本地方法栈顾名思义,加载的是native修饰的方法。native:在java中用native修饰的,表示该方法不是java原生的。比如C、C++

:heap,线程共享的,所有的线程共享一份。用来存放对象,new出来的对象都存储在这个区域。还有就是常量池。

元空间:存储.class文件,类的信息、方法的定义、静态变量等。都存在这里。隶属于本地内存。

JDK1.8的内存中,将原来的方法区交由元空间(元数据区)来实现了。

二、JDK1.8 堆内存结构(高薪常问)

Young 年轻区(代):Eden+S0+S1,S0和S1大小相等,新创建的对象都在年轻代。

Tenured 年老区:经过年轻代多次GC(垃圾回收)存活下来的对象存在年老区。

从jdk1.8开始,永久代(用于存放静态文件,如java类、方法)中的对象放到了元数据区,不存在永久代这一区域了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值