牛客网真实面经总结—JVM篇

编程入门 行业动态 更新时间:2024-10-13 18:20:57

牛客网<a href=https://www.elefans.com/category/jswz/34/1769581.html style=真实面经总结—JVM篇"/>

牛客网真实面经总结—JVM篇

最近在牛客网上看到很多程序员面试都被问到JVM相关的一些问题,为了让大家更好的参考,我把这些JVM相关面试题都整理了一下,然后自己也做了一些解答,如果有什么不对的欢迎大家在评论区告诉我,大家一起交流学习!

作为阅读福利,我整理了一些Java面试题(有脑图、手写pdf、md文档),需要的可【点击此处】获取!

请简单描述一下JVM加载class文件的原理是什么?

考察点:JVM

参考回答:

JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。

Java中的所有类,都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类,而它的工作就是把class文件从硬盘读取到内存中。在写程序的时候,我们几乎不需要关心类的加载,因为这些都是隐式装载的,除非我们有特殊的用法,像是反射,就需要显式的加载所需要的类。

类装载方式,有两种
(1)隐式装载,程序在运行过程中当碰到通过new 等方式生成对象时,隐式调用类装载器加载对应的类到jvm中,
(2)显式装载,通过class.forname()等方法,显式加载需要的类 ,隐式加载与显式加载的区别:两者本质是一样的。

Java类的加载是动态的,它并不会一次性将所有类全部加载后再运行,而是保证程序运行的基础类(像是基类)完全加载到jvm中,至于其他类,则在需要的时候才加载。这当然就是为了节省内存开销。

● 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

考察点:JVM

参考回答:

Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。
Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。

● jvm最大内存限制多少?

考察点:JVM

参考回答:

(1)堆内存分配

JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小 于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、 -Xmx相等以避免在每次GC后调整堆的大小。

(2)非堆内存分配

JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。

(3)VM最大内存

首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽 然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系 统下为2G-3G),而64bit以上的处理器就不会有限制了。

(3)下面是当前比较流行的几个不同公司不同版本JVM最大堆内存:

● jvm是如何实现线程的?

考察点:JVM

参考回答:

线程是比进程更轻量级的调度执行单位。线程可以把一个进程的资源分配和执行调度分开。一个进程里可以启动多条线程,各个线程可共享该进程的资源(内存地址,文件IO等),又可以独立调度。线程是CPU调度的基本单位。

主流OS都提供线程实现。Java语言提供对线程操作的同一API,每个已经执行start(),且还未结束的java.lang.Thread类的实例,代表了一个线程。

Thread类的关键方法,都声明为Native。这意味着这个方法无法或没有使用平台无关的手段来实现,也可能是为了执行效率。

实现线程的方式

A.使用内核线程实现内核线程(Kernel-Level Thread, KLT)就是直接由操作系统内核支持的线程。

内核来完成线程切换

内核通过调度器Scheduler调度线程,并将线程的任务映射到各个CPU上程序使用内核线程的高级接口,轻量级进程(Light Weight Process,LWP)用户态和内核态切换消耗内核资源

使用用户线程实现

系统内核不能感知线程存在的实现

更多推荐

牛客网真实面经总结—JVM篇

本文发布于:2024-02-25 01:00:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1697269.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:真实   牛客网   JVM

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!