24道几乎必问的JVM面试题,我只会7道,你能答出几道?

关于JVM虚拟机调优的20道高级面试题 JVM内存模型是Java虚拟机在执行Java程序时,对内存进行逻辑划分的一种抽象模型。程序计数器:每个线程都有一个独立的程序计数器,用于存储下一条要执行的指令的地址。这样当线程恢复执行时,可以知道从哪里开始执行。虚拟机栈:每个线程也有一个私有的虚拟机栈,用于存储局部变量、操作数栈、动态链接和方法出口等信息。这个栈在方法调用和返回时扮演着重要角色。本地方法栈:与虚拟机栈类似,本地方法栈主要用于支持本地方法的调用。堆:堆是JVM内存模型中最大的一块内存区域,主要用于存储对象实例。 阅读详情

前言

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键,所以在面试Java岗的时候JVM几乎是必问的,所以今天我总结了24道JVM相对来说有代表性的面试题,希望对你有所帮助。

之前发过其他关于面试题的文章,然后有粉丝留言建议不要一开始就直接把答案贴出来,所以这篇文章我就先把题目放出来,答不出来的题可以翻一下放在后面的答案。

那话不多说,我们开始正题。

JVM 底层面试题

  • 说一下JVM的主要组成部分?及其作用?
  • 说一下JVM运行时数据区?
  • 队列和栈是什么?有什么区别?
  • 什么是双亲委派模型?
  • 说一下类装载的执行过程?
  • 怎么判断对象是否可以被回收?
  • Java 中都有哪些引用类型?
  • 说一下JVM有哪些垃圾回收算法?
  • 说一下JVM有哪些垃圾回收器?
  • 详细介绍一下CMS垃圾回收器?
  • 新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?
  • 简述分代垃圾回收器是怎么工作的?
  • 说一下JVM调优的工具?
  • 常用的JVM调优的参数都有哪些?
  • 怎么获取Java程序使用的内存?堆使用的百分比?
  • Java 中堆和栈有什么区别?
  • 你能保证GC执行吗?

JVM 底层与GC(Garbage Collection)的面试题

  • 64位JVM中,int的长度是多数?
  • Serial 与 Parallel GC 之间的不同之处?
  • 32位和64位的JVM,int类型变量的长度是多数?
  • Java中WeakReference与SoftReference的区别?
  • WeakHashMap是怎么工作的?
  • JVM 选项-XX:+UseCompressedOops有什么作用? 为什么要使用?
  • 怎样通过Java程序来判断JVM是32位还是64位?
  • 32位JVM和64位JVM的最大堆内存分别是多数?
  • JRE、JDK、JVM及JIT之间有什么不同?

JVM底层面试题答案

1、说一下JVM的主要组成部分?及其作用?

class loader 类加载器:加载类文件到内存。Class loader只管加载,只要符合文件结构就加载,至于能否运行,它不负责,那是有Exectution Engine负责的。

exection engine :执行引擎也叫解释器,负责解释命令,交由操作系统执行。

native interface:本地接口。本地接口的作用是融合不同的语言为java所用。

Runtimedata area 运行数据区:运行数据区是jvm的重点,我们所有所写的程序都被加载到这里,之后才开始运行。

stack:栈也叫栈内存,是java程序的运行区,是在线程创建时创建,它的生命周期跟随线程的生命周期,线程结束栈内存释放;对于栈来说不存在垃圾回收的问题,只要线程一结束,该栈就结束。栈中的数据以栈帧的格式存在,栈帧是一个内存区块,是一个数据集,是一个有关方法和运行期数据的集合,当一个方法A被调用时就产生了一个栈帧F1,并被压入到栈中,A方法又调用了B方法,于是产生栈帧F2也被压入栈,执行完毕后,先弹出F2栈帧,再弹出F1栈帧,遵循“先进后出”原则。

堆内存:一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的。类的加载器读取了类文件之后,需要把类、方法、常变量放到堆内存中,以方便执行器执行,堆内存分三部分:永久存储(用于存放jdk自身携带的class,interface的元数据,也就是说它存储的是运行环境必须的类信息,被装载至此区域的数据是不会被垃圾回收掉的,只有关闭jvm释放此区域所占用的内存)区、新生区、老年代

method area方法区:方法去是被所有线程共享,该区域保存的所有字段和字节方法码以及一些特殊方法如构造函数,接口代码也在此定义。

PC Register 程序计数器:每个线程都有一个程序计数器,就是一个指针,指向方法区中的方法字节码,由执行引擎读取下一条指令

2、说一下JVM运行时数据区?

不同虚拟机的运行时数据区可能略微有所不同,但都会遵从 Java 虚拟机规范, Java 虚拟机规范规定的区域分为以下 5 个部分:

程序计数器(Program Counter Register):当前线程所执行的字节码的行号指示器,字节码解析器的工作是通过改变这个计数器的值,来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能,都需要依赖这个计数器来完成;

Java 虚拟机栈(Java Virtual Machine Stacks):用于存储局部变量表、操作数栈、动态链接、方法出口等信息;

本地方法栈(Native Method Stack):与虚拟机栈的作用是一样的,只不过虚拟机栈是服务 Java 方法的,而本地方法栈是为虚拟机调用 Native 方法服务的;

Java 堆(Java Heap):Java 虚拟机中内存最大的一块,是被所有线程共享的,几乎所有的对象实例都在这里分配内存;

方法区(Methed Area):用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。

3、队列和栈是什么?有什么区别?

  • 队列和栈都是被用来预存储数据的。
  • 队列允许先进先出检索元素,但也有例外的情况,Deque 接口允许从两端检索元素。
  • 栈和队列很相似,但它运行对元素进行后进先出进行检索。

4、什么是双亲委派模型?

在介绍双亲委派模型之前先说下类加载器。对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立在 JVM 中的唯一性,每一个类加载器,都有一个独立的类名称空间。类加载器就是根据指定全限定名称将 class 文件加载到 JVM 内存,然后再转化为 class 对象。

类加载器分类:

  • 启动类加载器(Bootstrap ClassLoader),是虚拟机自身的一部分,用来加载Java_HOME/lib/目录中的,或者被Xbootclasspath 参数所指定的路径中并且被虚拟机识别的类库;
  • 其他类加载器:
  • 扩展类加载器(Extension ClassLoader):负责加载\lib\ext目录或Java. ext.
    dirs系统变量指定的路径中的所有类库;
  • 应用程序类加载器(Application
    ClassLoader)。负责加载用户类路径(classpath)上的指定类库,我们可以直接使用这个类加载器。一般情况,如果我们没有自定义类加载器默认就是用这个加载器。

双亲委派模型:如果一个类加载器收到了类加载的请求,它首先不会自己去加载这个类,而是把这个请求委派给父类加载器去完成,每一层的类加载器都是如此,这样所有的加载请求都会被传送到顶层的启动类加载器中,只有当父加载无法完成加载请求(它的搜索范围中没找到所需的类)时,子加载器才会尝试去加载类。

5、说一下类装载的执行过程?

类装载分为以下 5 个步骤:

加载:根据查找路径找到相应的 class 文件然后导入;
检查:检查加载的 class 文件的正确性;
准备:给类中的静态变量分配内存空间;
解析:虚拟机将常量池中的符号引用替换成直接引用的过程。符号引用就理解为一个标示,而在直接引用直接指向内存中的地址;
初始化:对静态变量和静态代码块执行初始化工作。

6、怎么判断对象是否可以被回收?

一般有两种方法来判断:

  • 引用计数器:为每个对象创建一个引用计数,有对象引用时计数器 +1,引用被释放时计数 -1,当计数器为 0时就可以被回收。它有一个缺点不能解决循环引用的问题;
  • 可达性分析:从 GC Roots 开始向下搜索,搜索所走过的路径称为引用链。当一个对象到 GC Roots
    没有任何引用链相连时,则证明此对象是可以被回收的。

7、Java中都有哪些引用类型?

  • 强引用:发生 gc 的时候不会被回收。
  • 软引用:有用但不是必须的对象,在发生内存溢出之前会被回收。
  • 弱引用:有用但不是必须的对象,在下一次GC时会被回收。
  • 虚引用(幽灵引用/幻影引用):无法通过虚引用获得对象,用 PhantomReference 实现虚引用,虚引用的用途是在 gc时返回一个通知。

8、说一下JVM有哪些垃圾回收算法?

  • 标记-清除算法:标记无用对象,然后进行清除回收。缺点:效率不高,无法清除垃圾碎片。
  • 标记-整理算法:标记无用对象,让所有存活的对象都向一端移动,然后直接清除掉端边界以外的内存。
  • 复制算法:按照容量划分二个大小相等的内存区域,当一块用完的时候将活着的对象复制到另一块上,然后再把已使用的内存空间一次清理掉。缺点:内存使用率不高,只有原来的一半。
  • 分代算法:根据对象存活周期的不同将内存划分为几块,一般是新生代和老年代,新生代基本采用复制算法,老年代采用标记整理算法。

9、说一下JVM有哪些垃圾回收器?

  • Serial:最早的单线程串行垃圾回收器。
  • Serial Old:Serial 垃圾回收器的老年版本,同样也是单线程的,可以作为 CMS 垃圾回收器的备选预案。
  • ParNew:是 Serial 的多线程版本。
  • Parallel 和 ParNew 收集器类似是多线程的,但 Parallel 是吞吐量优先的收集器,可以牺牲等待时间换取系统的吞吐量。
  • Parallel Old 是 Parallel 老生代版本,Parallel 使用的是复制的内存回收算法,Parallel Old
    使用的是标记-整理的内存回收算法。
  • CMS:一种以获得最短停顿时间为目标的收集器,非常适用 B/S 系统。
  • G1:一种兼顾吞吐量和停顿时间的 GC 实现,是 JDK 9 以后的默认 GC 选项。

10、详细介绍一下CMS垃圾回收器?

CMS 是英文 Concurrent Mark-Sweep 的简称,是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动 JVM 的参数加上“-XX:+UseConcMarkSweepGC”来指定使用 CMS 垃圾回收器。
CMS 使用的是标记-清除的算法实现的,所以在 gc 的时候会产生大量的内存碎片,当剩余内存不能满足程序运行要求时,系统将会出现 Concurrent Mode Failure,临时 CMS 会采用 Serial Old 回收器进行垃圾清除,此时的性能将会被降低。

11、新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?

  • 新生代回收器:Serial、ParNew、Parallel Scavenge
  • 老年代回收器:Serial Old、Parallel Old、CMS
  • 整堆回收器:G1

新生代垃圾回收器一般采用的是复制算法,复制算法的优点是效率高,缺点是内存利用率低;老年代回收器一般采用的是标记-整理的算法进行垃圾回收。

12、简述分代垃圾回收器是怎么工作的?

分代回收器有两个分区:老生代和新生代,新生代默认的空间占比总空间的 1/3,老生代的默认占比是 2/3。

新生代使用的是复制算法,新生代里有 3 个分区:Eden、To Survivor、From Survivor,它们的默认占比是 8:1:1,它的执行流程如下:

  • 把 Eden + From Survivor 存活的对象放入 To Survivor 区;
  • 清空 Eden 和 From Survivor 分区;
  • From Survivor 和 To Survivor 分区交换,From Survivor 变 To Survivor,To Survivor 变 From Survivor。

每次在 From Survivor 到 To Survivor 移动时都存活的对象,年龄就 +1,当年龄到达 15(默认配置是 15)时,升级为老生代。大对象也会直接进入老生代。

老生代当空间占用到达某个值之后就会触发全局垃圾收回,一般使用标记整理的执行算法。以上这些循环往复就构成了整个分代垃圾回收的整体执行流程。

13、说一下JVM调优的工具?

JDK 自带了很多监控工具,都位于 JDK 的 bin 目录下,其中最常用的是 jconsole 和 jvisualvm 这两款视图监控工具。

  • jconsole:用于对 JVM 中的内存、线程和类等进行监控;
  • jvisualvm:JDK 自带的全能分析工具,可以分析:内存快照、线程快照、程序死锁、监控内存的变化、gc 变化等。

14、常用的JVM调优的参数都有哪些?

XX比X的稳定性更差,并且版本更新不会进行通知和说明。

  • -Xms

s为strating,表示堆内存起始大小

  • -Xmx

x为max,表示最大的堆内存

(一般来说-Xms和-Xmx的设置为相同大小,因为当heap自动扩容时,会发生内存抖动,影响程序的稳定性)

  • -Xmn

n为new,表示新生代大小

(-Xss:规定了每个线程虚拟机栈(堆栈)的大小)

  • -XX:SurvivorRator=8

表示堆内存中新生代、老年代和永久代的比为8:1:1

  • -XX:PretenureSizeThreshold=3145728

表示当创建(new)的对象大于3M的时候直接进入老年代

  • -XX:MaxTenuringThreshold=15

表示当对象的存活的年龄(minor gc一次加1)大于多少时,进入老年代

  • -XX:-DisableExplicirGC

表示是否(+表示是,-表示否)打开GC日志

15、你能保证GC执行吗?

不能,虽然你可以调用 System.gc() 或者 Runtime.gc(),但是没有办法保证 GC 的执行。

16、怎么获取Java程序使用的内存?堆使用的百分比?

可以通过 java.lang.Runtime 类中与内存相关方法来获取剩余的内存,总内存及 最大堆内存。

通过这些方法你也可以获取到堆使用的百分比及堆内存的剩余空间。 Runtime.freeMemory() 方法返回剩余空间的字节数,Runtime.totalMemory() 方法总内存的字节数,Runtime.maxMemory() 返回最大内存的字节数。

17、Java中堆和栈有什么区别?

JVM 中堆和栈属于不同的内存区域,使用目的也不同。栈常用于保存方法帧和局 部变量,而对象总是在堆上分配。

栈通常都比堆小,也不会在多个线程之间共享, 而堆被整个 JVM 的所有线程共享。

JVM 底层 与 GC(Garbage Collection)的面试题答案

1、64 位JVM中,int的长度是多数?

Java 中,int 类型变量的长度是一个固定值,与平台无关,都是 32 位。意思就 是说,在 32 位 和 64 位 的 Java 虚拟机中,int 类型的长度是相同的。

2、Serial与Parallel GC之间的不同之处?

Serial 与 Parallel 在 GC 执行的时候都会引起 stop-the-world。

它们之间主要 不同 serial 收集器是默认的复制收集器,执行 GC 的时候只有一个线程,而 parallel 收集器使用多个 GC 线程来执行。

3、32位和64位的JVM,int类型变量的长度是多数?

32 位和 64 位的 JVM 中,int 类型变量的长度是相同的,都是 32 位或者 4 个字节。

4、Java中WeakReference与SoftReference的区别?

虽然 WeakReference 与 SoftReference 都有利于提高 GC 和 内存的效率, 但是 WeakReference ,一旦失去最后一个强引用,就会被 GC 回收,而软引用 虽然不能阻止被回收,但是可以延迟到 JVM 内存不足的时候。

5、WeakHashMap是怎么工作的?

WeakHashMap 的工作与正常的 HashMap 类似,但是使用弱引用作为 key, 意思就是当 key 对象没有任何引用时,key/value 将会被回收。

6、JVM选项-XX:+UseCompressedOops有什么作用? 为什么要使用?

当你将你的应用从 32 位的 JVM 迁移到 64 位的 JVM 时,由于对象的指针从 32 位增加到了 64 位,因此堆内存会突然增加,差不多要翻倍。

这也会对 CPU 缓存(容量比内存小很多)的数据产生不利的影响。因为,迁移到 64 位的 JVM 主要动机在于可以指定最大堆大小,通过压缩 OOP 可以节省一定的内存。通过 -XX:+UseCompressedOops 选项,JVM 会使用 32 位的 OOP,而不是 64 位 的 OOP。

7、怎样通过Java程序来判断JVM是32位 还是64位?

你可以检查某些系统属性如 sun.arch.data.model 或 os.arch 来获取该信息。

8、32位JVM和64位JVM的最大堆内存分别是多数?

理论上说上 32 位的 JVM 堆内存可以到达 2^32,即 4GB,但实际上会比这个 小很多。不同操作系统之间不同,如 Windows 系统大约 1.5 GB,Solaris 大约 3GB。

64 位 JVM 允许指定最大的堆内存,理论上可以达到 2^64,这是一个非 常大的数字,实际上你可以指定堆内存大小到 100GB。甚至有的 JVM,如 Azul, 堆内存到 1000G 都是可能的。

9、JRE、JDK、JVM 及JIT之间有什么不同?

JRE 代表 Java 运行时(Java run-time),是运行 Java 引用所必须的。JDK 代 表 Java 开发工具(Java development kit),是 Java 程序的开发工具,如 Java 编译器,它也包含 JRE。JVM 代表 Java 虚拟机(Java virtual machine),它 的责任是运行 Java 应用。

JIT 代表即时编译(Just In Time compilation),当 代码执行的次数超过一定的阈值时,会将 Java 字节码转换为本地代码,如,主 要的热点代码会被转换为本地代码,这样有利大幅度提高 Java 应用的性能。

这些题你答对了几道呢,正确率不高的同学也别沮丧,我整理了一些关于虚拟机的电子书资料,只要好好消化这些资料,再也不怕面试官问到这块的问题。

除了这些,其他热门技术的面试题我也一直有在整理,都可以免费分享给大家的

最后:

我们身为技术人员,最怕的就是安于现状,一直在原地踏步,那么你可能在30岁就会迎来自己的职业危机,因为你工作这么久提升的只有自己的年龄,技术还是万年不变!

我知道,对于一些学历没有优势的人来说,外包是别无选择,但是未来的路究竟要怎么走,取决你的步子迈多开。每个人都有自己的选择,如果你喜欢稳定,那按部就班适合你,但你有想法,不甘平庸,那就别让外包埋没了你。

如果你想在未来能够自我突破,圆梦大厂,那或许以上这份学习资料,你需要阅读阅读,希望能够对你的职业发展有所帮助。

最后,希望未来的我发展顺利,早日拿下p7!同样,也祝愿你实现自己的人生理想,愿我们都越来越好,共勉!

获取方式: 只需你**点赞+关注**后,Java进阶交流群:714827309 哦-!


获取方式: 只需你点赞+关注后,Java进阶交流群:714827309 进群拿资料哦-!

八年复盘:2017欢聚时代Android校招笔试全解析 Android开发基础是移动端技术栈的基石,而校招笔试正是检验这些核心知识的最佳试金石。从Java集合到Handler消息机制,从Binder IPC到性能优化,这些底层原理贯穿于Android应用开发的始终,也是直播等高实时性场景的技术保障。深入理解这些概念,不仅有助于应对面试中的高频考点,更能为工程实践中的卡顿排查、内存治理提供理论支撑。随着行业向精细化发展,无论是传统App开发还是车载、音视频等新方向,扎实的底层功底仍是技术成长的关键。本文以2017年欢聚时代Android工程师校招C卷为样本,回顾其 阅读详情

相关推荐

经典面试题 之 JVM调优

JVM调优涉及到两个很重要的概念:吞吐量和响应时间。jvm调优主要是针对他们进行调整优化,达到一个理想的目标,根据业务确定目标是吞吐量优先还是响应时间优先。一、调优步骤 调优的前提是熟悉业务场景,先判断出当前业务场景是吞吐量优先还是响应时间优先。调优需要建立在监控之上,由压力测试来判断是否达到业务要求和性能要求。 调优的步骤大致可以分为: 1.熟悉业务场景,了解当前业务系统的要求,是吞吐量优先还是响应时间优先; 2.选择合适的垃圾回收器组合,如果是吞

weixin_69413377的博客 1万+

常见Jvm面试题总结及答案整理 120道(持续更新)

最新Jvm面试题总结及答案【附答案解析】Jvm面试题及答案2021,Jvm面试题最新面试题,Jvm面试题新答案已经全部更新完了,有些答案是自己总结的,也有些答案是在网上搜集整理的。这些答案难免会存在一些错误,仅供大家参考。如果发现错误还望大家多多包涵,不吝赐教,谢谢~ 如果不背 Jvm面试题的答案,肯定面试会挂! 这套Jvm面试题大全,希望对大家有帮助哈~ 博主已将以下这些面试题整理成了一个面试手册,是PDF版的 1、如何开启和查看 GC 日志? 常见的 GC 日志开启参数包括: 1、-Xlo.

架构师专栏 4012

STM32C8T6实战:用PID算法搞定超级电容的10W无线恒功率充电(附代码避坑)

本文详细介绍了如何使用STM32C8T6和PID算法实现超级电容的10W无线恒功率充电。通过优化硬件设计、动态调整PID参数以及三重滤波技术,解决了超级电容充电过程中的功率尖峰和效率问题。附有代码示例和调试经验,帮助开发者快速实现高效稳定的无线充电方案。

weixin_29190169的博客 408

JVM 常见面试题及解析(2024)

解析:JVM(Java Virtual Machine)即 Java 虚拟机,是一种可以执行 Java 字节码的虚拟计算机。它的主要作用是屏蔽不同操作系统和硬件之间的差异,使得 Java 程序能够在各种平台上 “一次编写,到处运行”。通过将 Java 源文件编译成字节码文件(.class),然后由 JVM 在不同的平台上进行解释或编译执行,实现了跨平台性。

爱好技术的小老头 1万+

清理异常值(MAD:绝对中位差)

清理异常数据: 中位数绝对偏差(MAD):用来描述单变量样本在定量数据中可变的一种标准 在统计学中,绝对中位差是刻画一元数据样本变化的一个鲁棒度量。由公式可以看出,其求解还算简单,给定一个数据样本集,首先求其中位数,然后求原始数据减去中位数的绝对值从而形成一个新的数据样本,再求新的数据样本的中位数即为绝对中位差。比如说有一个数据样本集X={2 3 8 7 9 6 4},这时候数据的中位数是6,原...

spider_man 1万+

从零到一:基于Blazor和Elsa Workflows的工作流系统开发实战

本文详细介绍了如何利用Blazor和Elsa Workflows构建高效的工作流系统,从技术选型到生产环境部署,涵盖动态工作流建模、Blazor前端集成及性能优化等核心内容。通过实战案例,展示如何实现订单处理系统的自动化与灵活性,提升企业流程效率。

weixin_26875109的博客 429

10道详细的JVM调优、JVM问题排查面试题,Java高级工程师题,含详细答案

请解释Java中的类卸载是什么意思,为什么它对长期运行的应用非常重要。类卸载是指JVM在满足一定条件的情况下,将不再使用的类从方法区(Metaspace)中移除的过程。类卸载只发生在Full GC期间,当类的Class对象没有任何引用指向它,并且该类对应的ClassLoader也已经不可达时,JVM才可能会卸载这个类。对于长期运行的应用来说,类卸载非常重要,因为它可以帮助释放宝贵的内存资源,特别是在动态加载和卸载类的场景中,如OSGi框架、热部署功能或者使用了反射API的应用。

横竖撇折点 1683

用宝塔面板+CentOS 7.6,30分钟搞定DNF手游私服搭建(附全套资源下载)

本文详细介绍了如何使用宝塔面板和CentOS 7.6在30分钟内快速搭建DNF手游私服。通过图形化界面操作,无需复杂命令,即可完成服务端部署、MySQL数据库配置及客户端适配,适合Linux新手快速上手。

weixin_33737774的博客 611

24 道几乎必问的 JVM 面试题,我只会 7 道,你能答出几道?

而使用Java虚拟机是实现这一特点的关键,所以在面试Java岗的时候JVM几乎是必问的,所以今天我总结了24道JVM相对来说有代表性的面试题,希望对你有所帮助。之前发过其他关于面试题的文章,然后有粉丝留言建议不要一开始就直接把答案贴出来,所以这篇文章我就先把题目放出来,答不出来的题可以翻一下放在后面的答案。32位JVM和64位JVM的最大堆内存分别是多数?32位和64位的JVM,int类型变量的长度是多数?常用的JVM调优的参数都有哪些?......

wadfdhsajd的博客 217

Gromacs基础教程一:入门建议

本系列教程针对的群体:非计算化学专业,而是偏生物方向的、有少量分子动力学模拟需求的人群。

m0_67843839的博客 8574

安川机器人外部轴添加

本文详细介绍了如何在安川机器人本体上添加第7轴以及如何设置动作,本文以添加点焊枪为例进行讲解。

haier123888的博客 7895

三个月刷完阿里Java八股文1000道,我总结的实战刷题法

Java面试中的八股文常涉及集合、JVM、并发等基础概念。以HashMap为例,理解其扩容机制与红黑树化条件,比背诵默认值更能体现功底;JVM内存分区与垃圾回收原理,则是排查OOM问题的必备知识。掌握这些底层原理,不仅有助于应对大厂面试,更能指导日常调优与故障定位。在工程实践中,可通过每日定量刷题、费曼式复述和间隔复盘,将零散知识点串联成体系。以阿里巴巴Java八股文1000道为例,介绍一套可落地的刷题节奏与复盘方法,帮助开发者实现从理论到实战的迁移。

weixin_30367873的博客 349

windows中搭建sonic云真机环境/云真机环境搭建-基于docker容器部署

基于Windows系统搭建Sonic远程云真机环境实现通过浏览器操作手机端系统

雾林小妖的博客 1019

全球领先的数据库!我用它直接让公司项目的性能提升了一半~

阿里云 Redis 从 2015 年商用以来,一直是全球领先的云KV内存数据库产品,自从正式推出云数据库Redis 6.0版本,包含多项重大功能更新和大幅度的性能提升。相比于社区最初多线程...

HollisChuang's Blog 851

《Linux GPU 驱动核心机制:面向图形与 AI 计算的 DRM 内存管理与任务调度》 目录

本文以缓冲区对象(BO)生命周期为主线,系统解析 Linux DRM 子系统中 GPU 驱动的核心机制。涵盖 GEM 与 TTM 内存管理、dma-buf/dma-fence 共享同步、GPU 调度与地址空间管理,结合 amdgpu、Xe 等驱动代码,深入剖析其设计动机与实现逻辑。旨在填补中文领域对 GPU 内核机制系统性讲解的空白,为图形与 AI 计算场景下的内存泄漏、同步死锁等疑难问题提供可追溯的分析路径。

图形/计算GPU的驱动与虚拟化技术分享园地 3741

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

字节跳动大数据校招面试复盘:核心技术栈与实战准备思路

大数据开发岗位一直是互联网技术生态中的热门方向,其技术栈涵盖Java基础、Hadoop分布式存储与计算、Spark/Flink实时与离线处理、Kafka消息队列以及Hive数仓建模等核心组件。对于准备校招或跳槽的工程师而言,理解分布式系统的底层原理、掌握海量数据场景下的问题排查思路,远比死记硬背面试题更重要。从集群部署的规划策略到数据倾斜的优化方案,从离线链路的数据质量保障到实时计算的精准一次语义,这些知识点共同构成了大数据工程师的核心能力模型。本文基于真实校招复盘,系统拆解了大数据岗位的考察范围、典型面试

weixin_34161064的博客 340

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JAVA中级面试题

java中级面试题

优快云新星计划JAVA赛道TOP5、优快云内容合伙人、JAVA领域优质创作者、资深JAVA开发深耕JAVA领域。 3993

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

你能保证 GC 执行吗?

虽然可以通过或建议 JVM 执行垃圾回收,但这只是一个建议,不能保证垃圾回收会立即执行。JVM 自己会根据内存使用情况和性能优化策略决定垃圾回收的最佳时机。对于大多数应用程序,建议依赖 JVM 的自动垃圾回收机制,而不是尝试手动控制垃圾回收。

weixin_45990682的博客 410

JVM优化--1.JVM运行参数

JVM优化–1.JVM运行参数 JVM的三种参数类型: 标准参数 -help -version -X参数(非标准参数) -Xint(解释模式) -Xcomp(编译模式) -Xmixed(混合模式,默认) -Xms设置JVM初始堆内存大小 -Xmx设置JVM最大堆内存 eg: java -Xms512m -Xmx1024m TestJVM XX参数(主要用于JVM调优和debug) -XX参数的使用方式有两种,分别是boolean类型和非boolean类型 boolean类型 格式:-X

weixin_40815637的博客 269

JAVA中级面试题,java银行项目面试题

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来目录:部分内容截图:一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长。

2301_82242988的博客 432

垃圾回收知识扩展

默认情况下,即使System.gc()生效,它会使用传统Full GC方式回收整个堆,而会忽略参数中的UserG1GC和UseConcMarkSweepGC。当手动调用System.gc(),G1或者CMS并不会执行并发操作,只有使用-XX:+ExpliclitGCInvokesConcurrent 才可以改变这种默认行为。如果需要禁用System.gc() 可以使用:-XX:+DisableExplicintGC;

qq_41999521的博客 167

JVM调优 & 小结

目录1. JVM 调优的参数可以在哪里设置参数值? 2. JVM调优的参数都有哪些? JVM内存参数-XX:-DisableExplicirGC3. 说一下JVM调优的工具有哪些?4. 假如项目中产生了java内存泄露,你说一下你的排查思路?5. 好的,那现在再来说一种情况,就是说服务器CPU持续飙高,你的排查方案与思路?6. JVM垃圾回收 --- 三色标记与并发漏标问题7. 项目中什么情况下会内存溢出,怎么解决的8. 类加载过程、双亲委派机制9. 四种引用Java 中 WeakReference 与 S

weixin_53622554的博客 1169

每日五题-java面试题220826

1、JRE、JDK、JVM以及 JIT之间有什么不同? 2、解释 Java 堆空间及 GC? 3、你能保证 GC 执行吗? 4、怎么获取 Java 程序使用的内存?堆使用的百分比? 5、java 中 堆 和栈 有什么区别?

qq_44843371的博客 341

JVM面试高频问题

JVM中的这些常见面试考点,你会了吗?

日常学习记录、分享,愿我们都遇见更好的自己,与诸君共勉 971
上一篇: 在小公司做开发太难了!面试面到我心态爆炸...
下一篇: 3分钟简短教程:4部完成在外部Tomcat上部署SpringBoot应用程序
Python_cola
博客等级 码龄5年 2031粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值