浅谈JVM

浅谈JVM

  • JVM的位置

    装在操作系统上,相当于一个软件(用C写的),来跑Java程序

  • JVM的体系结构

    先将编写的.java文件通过javac命令编译为Class File,然后进入ClassLoader

    在这里插入图片描述

  • 类加载器

    用于加载Class文件,初始化得到Class对象,该对象即可用于new实例化对象。分为:

    1. 启动类(根)加载器(rt):获取不到,可能含有其他语言代码(上面还有虚拟机再带的加载器)

    2. 扩展类加载器(Ext)

    3. 应用程序加载器(App)

  • 双亲委派机制

    即上面三个加载器优先级从高到低,优先执行根加载器的类,若无再往下找,从而保障一些安全问题,如防止外层恶意代码干涉内层代码:防止自己定义的String类(app中)修改了java.lang.String(rt中),这种情况下自己定义的类不会被执行。

  • 沙箱安全机制

    由字节码校验器(确保遵循Java语言规范)和类加载器组成,将代码归入保护域,确定其可以进行哪些操作,主要限制代码对系统资源访问。

  • Native(面试加分项)

    凡是被Native关键字修饰的方法,说明其超出Java作用域调用了底层C语言库。该方法放在本地方法栈中,使用时再调用本地方法接口(JNI)。从而扩展Java使用,融合不同语言。

  • 堆内存(Heap Space)

    还有元空间(方法区),逻辑上存在,物理上不存在

    GC垃圾回收主要针对新生区和养老区

    在这里插入图片描述

    堆内存溢出(OOM)可先手动把虚拟机中堆内存调大并打印GCDetails信息,若仍然报错则考虑代码问题,可通过JPofiler工具(需安装idea插件),从而分析Dump文件,定位内存泄漏位置,获取大的对象。

  • 还需自行去看JUCJMM,面试高频问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值