Java面试题原理和底层,韩顺平java视频教程百度云盘

同步代码块是使用monitorenter和monitorexit指令实现的, ,当且一个monitor被持有之后,将处于锁定状态。线程执行到monitorenter指令时,将会尝试获取对象所对应的monitor所有权,即尝试获取对象的锁;

Java对象头和monitor是实现synchronized的基础!

synchronized存放的位置:synchronized用的锁是存在Java对象头里的。

Java对象头包括:

Mark Word(标记字段): 用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程 ID、偏向时间戳等等。它是实现轻量级锁和偏向锁的关键

Klass Pointer(类型指针): 是对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例

monitor: 可以把它理解为一个同步工具, 它通常被描述为一个对象。 是线程私有的数据结构

4. ConcurrentHashMap 的工作原理,底层原理(谈到多线程高并发大几率会问它)

5. JVM调优(JVM层层渐进问时大几率问)

查看堆空间大小分配(年轻代、年老代、持久代分配)

垃圾回收监控(长时间监控回收情况)

线程信息监控:系统线程数量

线程状态监控:各个线程都处在什么样的状态下

线程详细信息:查看线程内部运行情况,死锁检查

CPU热点:检查系统哪些方法占用了大量CPU时间

内存热点:检查哪些对象在系统中数量最大

jvm问题排查和调优:

jps主要用来输出JVM中运行的进程状态信息。

jstat命令可以用于持续观察虚拟机内存中各个分区的使用率以及GC的统计数据

jmap可以用来查看堆内存的使用详情。

jstack可以用来查看Java进程内的线程堆栈信息。 jstack是个非常好用的工具,结合应用日志可以迅速定位到问题线程。

Java性能分析工具

jdk会自带JMC(JavaMissionControl)工具。可以分析本地应用以及连接

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值