Java虚拟机-线程安全与锁优化

线程安全当多个线程同时访问一个对象时,如果不用考虑这些线程在运行环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的。线程安全的实现方法1、互斥同步互斥同步是一种最常见也是最主要的并发正确性保障手段。同

Java虚拟机-Java内存模型与线程

Java内存模型主内存和工作内存Java内存模型的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量值存储到内存和从内存中取出变量值这样的底层细节。此处的变量与Java编程中所说的变量有所区别,它包括了实例字段、静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,因为后者是线程私

Java虚拟机-类加载机制

概述Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称为虚拟机的类加载机制。类加载的时机一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载(Loading)、验证(Ver

Java虚拟机-垃圾收集器与内存分配策略

概述垃圾收集器主要完成三件事情:1、哪些内存需要回收2、什么时候回收3、如何回收在Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊的执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就

如何优化垃圾回收机制

垃圾回收机制掌握 GC 算法之前,我们需要先弄清楚 3 个问题。第一,回收发生在哪里?第二,对象在什么时候可以被回收?第三,如何回收这些对象?1. 回收发生在哪里?JVM 的内存区域中,程序计数器、虚拟机栈和本地方法栈这 3 个区域是线程私有的,随着线程的创建而创建,销毁而销毁;栈中的栈帧随着方法的

Java性能优化阅读笔记

HotSpot VM运行时HotSpot VM运行时幻境担当了许多职责,包括命令行选项解析、VM生命周期管理、类加载、字节码解释、异常处理、同步、线程管理、Java本地接口、VM致命错误处理和C++(非Java)堆管理。VM生命周期启动HotSpot VM组件是启动器。HotspotVM有若干个启动

ZGC新一代垃圾收集器笔记

垃圾收集器概述自Java中引入垃圾收集器以来,垃圾收集器的发展从未停止过。Java中成熟的垃圾回收器有串行垃圾收集器、并行垃圾收集器、并发垃圾回收器、并发标记回收期(ConcurrentMarkSweep,CMS)、垃圾优先回收器(GarbasgeFirst,也称为G1).在JDK11中引入了一款新

[转载]代表Java未来的ZGC深度剖析

JAVA程序最爽的地方是它的GC机制,开发人员不需要关注内存申请和回收问题。同时,JAVA程序最头疼的地方也是它的GC机制,因为掌握JVM和GC调优是一件非常困难的事情。在ParallelOldGC、CMS、G1之后,JDK11带来的全新的「ZGC」为我们解决了什么问题?Oracle官方介绍它是一个

[转载]JAVA 线上故障排查完整流程

线上故障主要会包括 CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如 jstack、jmap 等工具也是不囿于一个方面的问题的,基本上出问题就是 df、free、top 三连,然后依次 jstack、jmap 伺候,具体问题

jvm理论:Java内存线程模型与线程

1、主内存与工作内存Java内存模型的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量值存储到内存和从内存中取出变量值这样的底层细节。此处的变量(Variables)与Java编程中所说的变量有所区别,它包括了实例字段、静态字段和构成数组对象的元素,但不是包括局部变量与方法参数,因为后