自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 并发编程 - (3) 并发之共享模型-管程(悲观锁)

unpark相当于补充干粮,最多补充一份,然后检查是否有干粮,但没暂停时不消耗干粮,暂停时消耗完干粮继续前进;(成员变量和静态变量)如果有读写操作,则这段代码是临界区,需要考虑线程安全问题;park相当于能量耗尽,检查是否有干粮,没干粮时暂停执行,有干粮时消耗干粮;(局部变量引用类型)如果该对象逃离方法的作用范围,则需要考虑线程安全问题;多个方法的组合不是原子的(组合方法对相同共享变量进行操作时)unpark没调用过时,初始干粮状态是没有干粮;读写操作时发生指令交错就会出现问题。

2024-09-03 23:00:43 954

原创 并发编程- (2) Java线程

直接调用run方法不会开启新线程 ==> 不会异步。

2024-09-03 21:06:22 1114

原创 并发编程 - (1) 进程与线程

一、进程与线程 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来在程序运行时加载指令、管理内存、管理IO的; 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。 进程可以视为程序的一个实例。大部分程序可以同时运行多个实例进程 (eg: 记事本、画图、浏览器等),也有的程序只能启动一个实例进程(eg: 网易云音乐,360安全卫士);

2024-09-03 20:59:31 490

原创 深入学习JVM - (7) 字节码执行引擎

7.1 执行引擎 虚拟机的执行引擎是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式; 《规范》制定了JVM执行引擎的概念模型,即JVM的统一外观,不同厂商实现时可能选择解释执行或编译执行或者二者兼备; 从外观上看,所有JVM的执行引擎输入和输出都是一致的:输入字节码二进制流,处理过程是字节码解析执行的等小过程,输出执行结果; 7.2 运行时栈帧结构 结构图示 是虚拟机运行时数据区的虚拟机栈的栈元

2024-09-03 20:29:08 576

原创 深入学习JVM- (6) 全面理解jvm类加载机制

6.1 类加载机制 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。 在Java里面,类型的加载、连接和初始化都是在程序的运行期间完成,这种机制一方面增加了提前编译时的额外困难,增加了类加载时的性能开销,另一方面为Java应用提供了极高的扩展性和灵活性,Java的动态扩展特性就是依赖于运行期动态加载和动态连接的特点实现。 6.2 类加载时机 类型的生命周期:加载

2024-09-03 20:26:58 577

原创 深入学习JVM- (5) 了解类文件结构

➀每个Class文件对应着唯一的一个类或接口的定义信息,但类或接口并不一定都得定义在文件里,因为类和接口可以动态生成。➁Class文件是一组以8个字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。当遇到需要占用8个字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8个字节进行存储。

2024-08-29 14:25:00 420

原创 深入学习JVM- (4)性能监控、故障处理与调优

4.1 三要素 关键基础:知识和经验 依据:数据,包括但不限于异常堆栈、虚拟机运行日志、垃圾收集器日志、线程快照(threaddump/javacore文件)、堆转储快照(heap dump/hprof文件)等 手段:通过工具运用知识来处理数据 4.2 工具 (1)基础故障处理工具 jps:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(名称以及这些进程的本地虚拟机唯一ID; jstat:监视虚拟机各种运行状态信息,可以显示本地或者远程虚拟机进程中的类加载、内存

2024-08-29 14:20:20 233

原创 深入学习JVM- (3)理解并运用不同的垃圾收集器

Parallel Scavenge的目标是面向高吞吐量。哪块内存中存放的垃圾数量最多,回收收益最大。高吞吐量意味着处理器的资源利用效率。不同的角色只是代表不同的回收策略。以获取最短回收停顿时间为目的。低延迟意味着停顿时间短。

2024-08-29 14:16:51 647

原创 深入学习JVM- (2)垃圾收集基础

Java堆和方法区。

2024-08-28 21:24:31 675

原创 深入学习JVM- (1)理解Java内存区域与内存溢出异常

每个方法执行时会同步创建一个栈帧。不是运行时数据区的一部分。

2024-08-28 20:22:24 1026 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除