Java培训JVM 高频面试题

质量保
• 阅读 188

VM总体分为JVM规范和JVM实现

JVM和JDK的区别

JRE = JVM+Java标准库

JDK = JRE+开发调试诊断工具

JVM具有跨平台性

JVM跨语言性:JVM只识别字节码

JVM的运行时数据区有哪些

运行时数据区的定义:Java虚拟机在执行Java程序过程中会把它所管理的内存划分为若干个不同的数据区域

Java培训JVM 高频面试题

什么是堆内存?堆内存包含哪些部分

堆是JVM最大的内存区域,我们申请的几乎所有对象都存储在那

堆空间为了方便GC模块进行对象分配和回收,可以把堆空间进行划分:新生代、老年代

Java培训JVM 高频面试题

刚创出来的对象会放在新生代,经过多次垃圾回收会放在老年代。

新创建的对象会放在Eden区,如果Eden区的空间满了,会促发垃圾回收,把对象复制到S0,下次满了,会复制到S1,S0复制到S1。一般情况S区放不下会放在老年代,一般情况下要经过15次垃圾回收才会放在老年代

什么是内存泄露,和内存溢出有什么关系

内存泄露:本来无用的对象却继续占用内存,没有在恰当的时机释放占用的内存java培训

不使用的内存,却没有被释放,这个叫做内存泄露

与内存溢出的关系:

如果存在严重的内存泄露问题,随着时间的推移,必须会引起内存溢出。

Java有四种类型的垃圾回收器

1.串行垃圾回收器

2.并行垃圾回收器

3.CMS垃圾回收器

4.G1垃圾回收器

自己百度更深刻

Java8默认使用的垃圾回收器是什么

并行回收器,它是多线程的

指使用多个GC worker 线程并行地执行垃圾收集,能充分利用CPU的能力,缩短垃圾收集的暂停时间

除了单线程的GC,PS、CMS、G1都是多个线程来并行执行GC工作

G1 是垃圾优先,哪块垃圾最多就优先清理它

什么是STW?什么是安全点?什么是安全区域?

所有应用线程都需要暂停后才能执行GC,这时候就叫STW(GC暂停)。

类加载和类加载器

类加载是一个类从被加载到Java虚拟机内存开始到卸载出内存。

生命周期经历 --加载、验证、准备、解析、初始化、使用和卸载 七个阶段,其中验证、准备、解析统称为连接。

加载阶段虚拟机需要完成三件事情:

1.通过一个类的全限定名来获取定义此类的二进制字节流

2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构

3.在内存中生成一个代表这个类的java.lang.Class对象,作为这个方法区的所有数据的访问入口

会把第一步这个动作放在Java虚拟机外部去实现,便于程序自己决定如何获取所需的类,这个动作被称为“类加载器”

什么是双亲委派机制?有什么作用?

双亲委派机制是属于类加载的一个机制,加载之前,会委派给它的父加载器进行加载,如果父加载器不行,就自己加载。可以避免类的重复加载,保证Java核心的安全稳定

使用过哪些JVM相关的命令工具

jps 列出当前机器正在运行的虚拟机进程,jps从操作系统的临时目录去找

-q:仅显示进程

-m:输出住函数传入的参数

-l:输出应用程序住类完整的package名称或jar完整名称

-v:列出jvm参数

jstat 用于监视虚拟机各种运行状态信息的命令行工具

jstat -gc 13616 查看jvm进程13616的情况

文章来源于编译

点赞
收藏
评论区
推荐文章
灯灯灯灯 灯灯灯灯
4年前
大厂必备面试题———JVM内存结构
JVM一,基本介绍解释:java虚拟机,准确的来说是java二进制字节码的运行环境。(jvm是一套规范),用来执行class文件,保证java语言跨平台。Java虚拟机可以看作是一台虚拟的计算机,和真是的计算机一样,有着自己的指令集以及各种运行时内存。jvm就是一个字节码翻译器,它将字节码文件翻译成各个系统对应的的机器码,确保字节码文件能在各个系统上正确的
lucien-ma lucien-ma
4年前
Java里面的十万个为什么
Java里面的十万个为什么1.不是说JVM是运行Java程序的虚拟机吗?那JRE和JVM的关系是怎么样的呢?简单地说,JRE包含JVM。JVM是运行Java程序的核心虚拟机,而运行Java程序不仅需要核心虚拟机,还需要其他的类加载器,字节码校验器以及大量的基础类库。JRE除包含JVM之外,还包含运行Java程序的其
Wesley13 Wesley13
3年前
java基础知识随身记
2018年11月12日20:51:35一、基础知识:1、JVM、JRE和JDK的区别:JVM(JavaVirtualMachine):java虚拟机,用于保证java的跨平台的特性。  java语言是跨平台,jvm不是跨平台的。JRE(JavaRuntimeEnvironment):java的运行环境,包括jvmjava的核心类
Easter79 Easter79
3年前
tomcat配置
要使用Tomcat,首先需要安装jdk,JDK的全称是JavaDevelopmentKit,是Sun公司免费提供的Java语言的软件开发工具包,其中包含Java虚拟机(JVM)jvm虚拟机的作用就是把高级语言》编译成字节码》通过运算得出结果》最后把东西发布利用JVM解释这些字节码文件,从而保证了Java的跨平台性安
Stella981 Stella981
3年前
JVM内存区域划分
JVM内存区域划分一、JVM运行时数据区划分根据《Java虚拟机规范》JVM会把它管理的内存划分为若干个不同的数据区域,如下图所示:方法区、堆、栈(虚拟机栈、本地方法栈)、程序计数器。线程私有的意思是指,JVM每遇到一个新的线程就会为他们分配栈和程序计数器。!(https
Wesley13 Wesley13
3年前
Java是如何实现跨平台的
一.Java是如何实现跨平台的1.我们编写的Java源码,编译后会生成一种.class文件,称为字节码文件2.Java虚拟机JVM就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。!(https:/
Wesley13 Wesley13
3年前
Java程序运行机制及开发环境
Java既是编译型语言,又是解释型语言java源文件首先需要通过javac编译生成后缀名为.class的字节码文件(与平台无关,只面向JVM),然后使用Java虚拟机将字节码解释成特定平台上的机器码运行。Java虚拟机JVM不同平台上的JVM不同,但是都提供了相同的接口。开发Java准备1.下
Stella981 Stella981
3年前
JVM必备指南
简介Java虚拟机(JVM)是Java应用的运行环境,从一般意义上来讲,JVM是通过规范来定义的一个虚拟的计算机,被设计用来解释执行从Java源码编译而来的字节码。更通俗地说,JVM是指对这个规范的具体实现。这种实现基于严格的指令集和全面的内存模型。另外,JVM也通常被形容为对软件运行时环境的实现。通常JVM实现主要指的是HotSpot。JVM
Stella981 Stella981
3年前
JVM知识(一):基础原理
学过java知识和技术人,都应该听说过jvm,jvm一直是java知识里面晋级阶段的重要部分,如果想要在java技术领域更深入一步,jvm是必须需要明白的知识点。本篇来讲解jvm的基础原理,先来熟悉一下大致的流程:JVM运行流程:  我们都知道java一直宣传的口号:一次编译,到处运行。也是它的跨平台性。这点的具体实现如下:!(h
Stella981 Stella981
3年前
JVM从概述到调优图文详解,含思维脑图深度剖析!
JVM概述JVM是一种用于计算机设备的规范,它是一个虚构的计算机的软件实现,简单的说,JVM是运行bytecode字节码程序的一个容器。它有一个解释器组件,可以实现JAVA字节码和计算机操作系统之间的通信,java程序只需要在JVM上一次编译,多出运行,因此JAVA具有跨平台性。内存结构方法区(常