JVM面试

jvm中有:

        方法区:method Area  存类的信息

        堆        :Heap  存对象信息

        虚拟机栈: jvm stacks  存 方法内局部变量、方法参数

        本地方法栈: native method stacks : 加载的是native 修饰的方法

        程序计数器:pc register 记录当前线程执行到第几行

1. 只有计数器不会出现内存溢出

2. 出现OutOfMemoryError :

        对象越来越多,一直在使用:堆内存耗尽

        类越来越多: 方法区内存耗尽

        线程越来越多:虚拟机栈耗尽。

3. 出现stackOverflowError:

        方法调用次数过多,把线程内内存耗尽: 虚拟机内部

4. jvm 参数: -xmx 最大内存 -xms 最小内存 -xmn 新生代内存数 -xx 新老总内存数...

5. jvm垃圾回收算法:

        标记清除、标记整理、标记复制

6. GC

        回收区域是堆内存,大部分采用分带回收思想,按规模分为MinorGC、MixedGC、FullGC

7 . 分代回收:把内存分为:伊甸园、幸存区、老年代。

8. 发现垃圾: 引用计数算法、跟搜索算法

9. jvm调优:

        -Xmx3550m:设置JVM 最大可用内存为3550M。

        -Xms3550m:设置JVM 初始内存为3550m。

        -Xmn2g:设置年轻代大小为2G。

        -Xss256k:设置每个线程的栈大小。

        -XX:NewRatio=4:设置年轻代和老年代比值。...

10. 类加载过程

        1. 加载- 将类的字节码文件载入方法区,并创建 .class对象,如果这个类有父类则先加载父类,属于懒惰加载。

        2. 连接:验证类是否规范,为static分配空间,将常量池符号引用解析为直接引用

        3. 初始化:执行静态代码块和非final静态变量的赋值,懒惰执行。

11. 双亲委派

        委派上级类加载器进行加载,如果找到,则上级加载,加载后该类对下级加载器可见,找不到,下级类加载器加载,对上级不可见。

12. 对象引用类型:

        强引用、软引用softReference、弱引用WeakReference、虚引用PhantomReference

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值