• 暂时停更一段时间!
  • 近期网站将陆续进行前端页面改造!
  • 招募网站编辑,联系站长!

标签:Java虚拟机

JVM面试问题总结

1. 讲一下 Java 内存划分Java 虚拟机在运行程序时会把其自动管理的内存划分为以下几个区域: – 堆内存:所有线程共享,对象实例。当扩展内存大于可用内存,抛 OOM。 – 方法区:已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。当内存申请大于实际可用内存,抛 OOM。(JDK1.8 以前,1.8 已……

JVM面试知识点解析(三)GC 相关

1)如何判断一个对象是否已经死去?答:引用计数:每个对象有一个引用计数属性,新增一个引用时计数加 1,引用释放时计数减 1,计数为 0 时可以回收。此方法简单,无法解决对象相互循环引用的问题。可达性分析(Reachability Analysis):从 GC Roots 开始向下搜索,搜索所走过的路径称为引用链。当一个对象到 GC Roots 没有任何……

JVM面试知识点解析(二)JVM 内存管理

1)JVM 内存划分:答:方法区(线程共享):各个线程共享的一个区域,用于存储虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。虽然 Java 虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却又一个别名叫做 Non-Heap(非堆),目的应该是与 Java 堆区分开来。运行时常量池:是方法区的一部分,用于存放编译器生成的各种字面量……

JVM面试知识点解析(一)JVM基础知识

1)Java 是如何实现跨平台的?注意:跨平台的是 Java 程序,而不是 JVM。JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM答:我们编写的 Java 源码,编译后会生成一种 .class 文件,称为字节码文件。Java 虚拟机(JVM)就是负责将字节码文件翻译成特定平台下的机器码然后运行,也就是……

Java虚拟机(四)JVM 参数

GC 优化配置配置描述-Xms初始化堆内存大小-Xmx堆内存最大值-Xmn新生代大小-XX:PermSize初始化永久代大小-XX:MaxPermSize永久代最大容量GC 类型设置配置描述-XX:+UseSerialGC串行垃圾回收器-XX:+UseParallelGC并行……

Java虚拟机(三)类加载机制

类是在运行期间动态加载的。类的生命周期包括以下 7 个阶段:– 加载(Loading)– 验证(Verification)– 准备(Preparation)– 解析(Resolution)– 初始化(Initialization)– 使用(Using)– ……

Java虚拟机(二)垃圾收集

程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。垃圾回收主要是针对 Java 堆和方法区进行。判断一个对象是否可回收1. 引用计数给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。两个对象出现……

Java虚拟机(一)运行时数据区域

程序计数器记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。虚拟机栈每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。可以通过 -Xss 这个虚拟机参数来指定一个程序的 Java 虚拟机栈……