jvm先关问题

Java内存模型 (JMM) 硬件内存架构
1.8 堆 栈 本地栈 计数器 元空间

常量池、运行时常量池、字符串常量池、静态变量、方法区 在哪
常量池又称静态常量池,在class类里面,初始化的是后被加载到运行常量池中
运行时常量池在元空间(方法区)中
字符串常量池在堆中
静态变量在元空间(方法区)中
方法区是jmm理论模型中的东西,hotsport在1.7实现叫做永久代,在1.8是元空间

逃逸分析、栈上分配?
经过逃逸分析的对象被分配到栈上。对象只存在与方法中,没有跳出方法的引用对象,可以称作逃逸对象。

jvm报错 怎么排查
先根据六大不同的oom(堆 栈 元空间 直接内存 线程个数 gc时间过长)异常定位分析代码
如何还分析不出来,那么启动的是后增加参数( -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./dmdump.bin),在oom的是后输出详细的日志,在根据详细的日志进行分析

默认的堆大小
默认 最小(-Xms1024m)是物理内存的1/64,最大(-Xmx1024m)是物理内存的1/4

年轻代 老年代 比例
1:2

年轻代三个的比例
8:1:1

8 1 1为什么是这个比例
百分之90的对象都朝升夕灭

默认栈
512k 到 1024k

垃圾回收的算法
引用计数法 、复制、标清、标整

有哪些垃圾回收器,他们的算法是什么
serial 复制
parNew 复制
paraller scavenge 复制

cms 标清
serialOld 标整
ParallerOld 标整
g1 类似 标清 + 标整

垃圾回收器默认是什么
paraller scavenge ParallerOld

为什么要有stw?
没有stw无法找出完全垃圾对象,会有浮动垃圾

jvm调优调的是什么?
减minor-jc,避免full-jc

怎么做的jvm调优么?
根据业务需求估算,业务中经常被使用的对象多大;
被会被利用完的一个周期是多长时间;
尽量往大了估算,用上限;
尽量让这些对象死在年轻代

进入老年来的条件
对象经过几次垃圾回收,熬到设定的年龄阈值,就会晋升到老年代。
如果直接分配大对象,该大对象超出了JVM设置的限定值,就会直接分配到老年代。
在一次新生代GC后,存活下来的对象不太多,Survivor区域中的几个年龄对象加起来超过了Survivor区内存的一半,那么根据动态年龄判定规则,从最小的年龄加起,比如年龄1+年龄2+年龄3的对象大小总和,超过了Survivor区内存的一半,此时年龄3以上的对象就会晋升老年代。
新生代GC后,存活下来的对象太多,Survivor区放不下,此时对象直接晋升老年代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值