JVM知识点汇总

JVMClass文件结构魔数:唯一作用是用于确定这个文件是否为一个能被虚拟机接受的Class文件。版本号:确定Class文件编译器版本,低版本的虚拟机不能运行高版本编译器编译的Class文件。常量池:字面量符号引用访问标志:用于识别一些类或接口层次的访问...

Read More


Java Object.hashCode()返回的是对象内存地址?

基于OpenJDK 8一直以为Java Object.hashCode()的结果就是通过对象的内存地址做相关运算得到的,但是无意在网上看到有相应的意见争论,故抽时间从源码层面验证了剖析了hashCode的默认计算方法。先说结论:OpenJDK8 默认ha...

Read More


ThreadLocal的内存泄露?什么原因?如何避免?

前言在分析ThreadLocal导致的内存泄露前,需要普及了解一下内存泄露、强引用与弱引用以及GC回收机制,这样才能更好的分析为什么ThreadLocal会导致内存泄露呢?更重要的是知道该如何避免这样情况发生,增强系统的健壮性。内存泄露内存泄露为程序在申...

Read More


关于高并发,我想告诉你这些!

高并发,几乎是每个程序员都想拥有的经验。原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPU load升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在技术深度上不断精进。在过往的面试中,如果候选人做过高并发的项目,我通...

Read More


HashMap源码注解 之 静态工具方法hash()、tableSizeFor()

HashMap#hash()为什么要有HashMap的hash()方法,难道不能直接使用KV中K原有的hash值吗?在HashMap的put、get操作时为什么不能直接使用K中原有的hash值。 /** * Computes key.ha...

Read More