Java JVM 性能调优(结合可视化工具) 1. Heap内存(老年代)持续上涨达到设置的最大内存值;2. Full GC 次数频繁;3.GC 停顿时间过长(超过1秒);4.应用出现OutOfMemory 等内存异常;内存溢出:申请内存时,没有足够的内存使用、内存泄露:无法释放已经申请的内存空间,一次性内存危害库忽略,但堆积,无论多少内存迟早被吃光 2022-07-22 浏览(248) 评论(0) 阅读全文
Java 锁升级过程(偏向锁/轻量级锁/重量级锁) 偏向锁是在无锁争用的情况下使用的,也就是同步开在当前线程没有执行完之前,没有其它线程会执行该同步块,一旦有了第二个线程的争用,偏向锁就会升级为轻量级锁,如果轻量级锁自旋到达阈值后,没有获取到锁,就会升级为重量级锁。 2021-04-09 浏览(1,041) 评论(0) 阅读全文
Java 用户模式和内核模式(线程级) 用户模式和内核模式区分主要是因为,为了计算机系统的正常安全运行,有些硬件资源(如:中断装置)和特权指令是不可以对用户进程开放的,所以区分了两种模式。 2021-04-01 浏览(505) 评论(0) 阅读全文
Java 理解JIT编译与优化 代码生成的第一步是即是(JIT)编译,通过此编译,可以在未针对平台高度优化生成的代码的情况下启动和运行Java应用程序。尽管JIT实际上不是JVM标准的一部分,但它仍然是Java的基本组件。从理论上讲,只要调用Java方法,JIT就会使用,它将JIT的字节码编译为本地机器代码,从而“及时”编译以执行。 2021-01-06 浏览(590) 评论(0) 阅读全文
Java Happens-Before保证线程可见 当一个变量被多个线程读取并且至少被一个线程写入时,如果读操作和写操作没有happens-before关系,则会产生数据竞争问题。 2021-01-06 浏览(975) 评论(0) 阅读全文
Java Java线程安全中的原子性操作 原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割,而只执行其中的一部分(不可中断性)。将整个操作视作一个整体,资源在该次操作中保持一致,这是原子性的核心特征。 2021-01-06 浏览(580) 评论(0) 阅读全文
Java JAVA类加载机制 Java类从被加载到JVM内存开始,到卸载出内存为止,它的整个生命周期包括了:加载(Loading),验证(Verification),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Using)和卸载(Unloading)七个阶段。 2021-01-06 浏览(1,057) 评论(2) 阅读全文