博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jvm面试必会基本知识
阅读量:6225 次
发布时间:2019-06-21

本文共 842 字,大约阅读时间需要 2 分钟。

  • 内存:
堆区 1.new的对象实例  ps:(java堆可以细分为新生代和老年代)(通过-xmx和-xms来实现可扩展)
虚拟机栈

局部变量

本地方法栈 为虚拟机使用的native方法服务
方法区 static变量、类信息、常量
程序计数器 当前线程所执行的字节码的行号指示器

 

 

 

 

 

  • 怎么判断是不是垃圾:

  引用计数法

  可达性分析(判断和GCroot有没有通路)

哪些对象可作为GC roots对象1.虚拟机栈中引用的对象2.本地方法栈中引用的对象3.方法区的static成员或者常量引用的对象。

 

  • 垃圾收集器:

   G1:整体标记整理,局部复制

   特点:并行于并发、分代收集、空间整理(整体标记-整理;局部复制)、可预测的停顿

   CMS:标记清除算法

缺点:1.对cpu资源非常敏感2.无法处理浮动垃圾3.基于“标记-清除”,会有大量的空间碎片产生

优点:并发收集、低停顿

垃圾清除算法:1.标记清除2.复制3.标记整理

  • 类加载:

  双亲委托(委托父类的类加载器,优点:使用更稳定的父类的包进行加载)

假如你有一个类abc.class要加载,首先加载这个类的请求由Application类加载器委托给它的父类加载器Extension类加载器;

优点:提高软件系统的安全性。因为在此机制下,用户自定义的类加载器不可能加载本应该由父类加载器加载的可靠类(从而防止不可靠的恶意代码代替由父类加载器加载的可靠代码)

  • 内存泄漏与内存溢出

    内存泄漏:是指程序在申请内存之后,无法释放已申请的内存空间。

    内存溢出:指程序申请内存时,没有足够的内存共申请者使用

 

  • 程序计数器有什么用?

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

转载于:https://www.cnblogs.com/nickup/p/9696900.html

你可能感兴趣的文章
机器学习实战——k-近邻算法
查看>>
设计模式——单例模式
查看>>
240. Search a 2D Matrix II
查看>>
php-预定义
查看>>
IntelliTrace 调试、定位异常
查看>>
linux Shell脚本编码格式
查看>>
String方法
查看>>
冲刺第五天
查看>>
php操作mysql与sqlite类
查看>>
Bitmap压缩到指定尺寸大小,获取圆角、圆形图片
查看>>
解决:模态框中使用select2下拉选项无法搜索
查看>>
LeetCode OJ:Min Stack(最小栈问题)
查看>>
什么是FPGA,PAL,EPLD?
查看>>
OO第一次博客作业
查看>>
计算机发展史简述
查看>>
wpf 遍历控件及其值
查看>>
Unity5.6.4f1 配置WebGL教程
查看>>
linux -硬盘分区
查看>>
Struts1防止重复提交
查看>>
JS控制滚动条的位置
查看>>