当前位置: 首页 > article >正文

java基础面试题(二)

java后端面试题大全

  • 3.JVM
    • 3.1 对象实例、类信息、常量、静态变量分别在运行时数据区的哪个位置?
    • 3.2 java类的加载流程
    • 3.3 java内存溢出什么时候会发生以及解决方法

3.JVM

3.1 对象实例、类信息、常量、静态变量分别在运行时数据区的哪个位置?


  • 对象实例、String常量池、基本类型常量池、静态变量
  • 方法区
    类信息、类常量池、运行时常量池
  • 虚拟机栈
    临时变量

3.2 java类的加载流程

java文件到最终运行, 需要经过编译和类加载这两个阶段
编译的过程:把.java文件编译成.class文件
类加载的过程:把.class文件加载到jvm的内存中

  1. 加载
    通过类的全限定名获取类的二进制数据, 这可以通过类加载器完成, 类加载器可以从文件系统、网络、ZIP文件等地方获取类文件的二进制数据
    将获取的二进制数据转换为方法区(或元空间)的运行时数据结构, 这个数据结构存储了类的字段、方法、构造方法等信息,同时也包含了类的常量池,即字面量(如字符串、final常量)和符号引用等。
  2. 验证
    确保被加载的类的正确性. 这个阶段主要包括文件格式验证、元数据验证、字节码验证等,以确保类文件的正确性和安全性。
  3. 准备
    为类的静态变量分配内存并设置初始值, 这里的初始值通常是默认值,比如数值类型的默认值是0,引用类型的默认值是null
  4. 解析
    类、接口、字段和方法的符号引用解析为直接引用
  5. 初始化
    类的初始化方法

3.3 java内存溢出什么时候会发生以及解决方法

一、内存溢出的原因
如果内存泄露的空间足够大,就会导致内存溢出

堆内存中一个对象不再使用时,垃圾回收器却无法从内存中删除他们,导致内存泄露。

二、内存泄露的影响


http://www.kler.cn/a/152494.html

相关文章:

  • Laravel修改默认的auth模块为md5(password+salt)验证
  • 电源控制系统架构(PCSA)之系统控制处理器组件
  • 企业软件手机app定制开发趋势|小程序网站搭建
  • Maven的安装和使用
  • opencv读取二进制灰度图并显示
  • 15 网关实战: 微服务集成Swagger实现在线文档
  • RPC与HTTP的详细比较
  • maven 基础
  • 大屏适配方案(vw、vh)
  • 抑制过拟合——从梯度的角度看LayerNorm的作用
  • Vue3 配置自动导入的步骤
  • Android 11.0 软硬键盘同时使用的兼容(软键盘与内置物理键盘共存)
  • CSS新手入门笔记整理:CSS列表样式
  • 1.自动化运维工具Ansible的安装
  • Linux CentOS7 安装Docker
  • Day51:503.下一个更大元素II、42. 接雨水
  • 全栈软件开发工程师需要具备哪些技能
  • ElementPlus自定义表单验证
  • 删除容器挂载卷打包容器镜像并传到阿里云
  • c++--类型的基础