读书笔记
文章平均质量分 90
5ycode
这个作者很懒,什么都没留下…
展开
-
深入拆解java虚拟机-笔记
java代码是怎么运行的?jvm具体是怎么运行java字节码的?在HotSpot里,有两种编译形式,一种是解释执行,逐条将字节码翻译成机器码并执行。(无需等待编译)一种是即时编译(Just in Time compilation)JIT ,将一个方法中包含的字节码编译成机器码再执行。(运行速度快)HotSpot 默认采用混合模式,综合了两者的优点。先解释执行字节码,将其中反复执行的热点代码,以方法为单位进行即时编译。即时编译器:C1 又叫Client编译器,面向的是对启动性能有要求的或执行时间较短的,客户端原创 2021-10-25 09:50:44 · 542 阅读 · 0 评论 -
垃圾收集器与内存分配策略
3.2对象已死?3.2.1 引用计数法在对象中加入一个引用计数器;很难解决循环引用;3.2.2 可达性分析算法GC Roots包含以下:虚拟机栈中引用的对象方法区中类的静态属性引用的对象;方法区中常量引用的对象;本地方法栈中JNI引入的对象;虚拟机内部引用,基本数据类型对应的class对象、常驻的异常对象、系统的类加载器;同步锁持有的对象;虚拟机内部的回调、本地代码缓存;3.2.3 再谈引用如果reference 类型的数据中存储的数值代表的是另外一块内存的起始地址;就称改reference数据代表某块内存原创 2021-06-01 16:42:03 · 208 阅读 · 1 评论 -
java内存模型与线程
12.1 概述程序大量的时间花费在磁盘I/O、网络通信或者数据库访问上;衡量一个服务性能的高低好坏,每秒事务处理数(Transactions Per Second TPS)是重要的指标之一。12.2 硬件的效率与一致性由于计算机的存储设备与处理器的运算速度有着几个数量级的差距,所以现代计算机系统都不得不加入一层或多层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲。将运算需要的数据复制到缓存,运算结束后再从缓存同步回内存之中。处理器可能会对输入代码进行乱序执行原创 2021-05-26 21:43:37 · 177 阅读 · 1 评论 -
虚拟机类加载机制
java内存区域与内存溢出垃圾收集器与内存分配策略7.1 概述java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转化解析和初始化,最终形成可以被虚拟机直接使用的java类型,这个过程被称作虚拟机的类加载机制。java天生可以动态扩展的语言特性依赖于运行期动态加载和动态链接的特点。7.2 类加载的时机一个类从被加载到虚拟机内存中开始,到卸载出内存为止,它的生命周期将会经历:加载(Loading)->验证(Verification)->准备(Preparation)->原创 2021-05-26 21:41:01 · 102 阅读 · 3 评论 -
线程安全与锁优化
13.2 线程安全13.2.1 java语言中的线程安全java语言中各种操作共享的数据分为以下五类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。一、不可变不可变的对象一定是线程安全了(废话,线程的不安全主要体现在增删改,只读没有任何不安全的地方)如:java中的字符串实例是一个典型的不可变对象,用户调用内部的substring()、replace()这些方法都是返回一个新构造的字符串对象。二、绝对线程安全一 个类要达到“不管运行时环境如何,调用者都不需要任何额外的同步措施”可能需要付出非常高昂原创 2021-04-08 15:38:37 · 119 阅读 · 0 评论 -
java内存区域与内存溢出
2.2运行时数据区域2.2.1程序计数器(Program Counter Register)定义:是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。特点:线程私有在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流程的指示器,分支、循环、调整、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。在多核处理器中,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储原创 2021-04-06 22:34:16 · 98 阅读 · 0 评论 -
《领域驱动设计精粹》读书笔记
第一章DDD对我而言还可以指引构建正确软件模型的方向。领域驱动对团队人的要求较高:具备深厚的业务能力(领域专家)具备业务抽象能力;具备技术抽象能力DDD 领域驱动设计 可以实现目标如果你希望打磨软件匠艺并提高项目的成功率;如果你迫切期望创造软件来帮助企业把业务竞争力提升到新高度;如果你期望实现出来的软件既能正确地对业务需求建模又可以采用最新建的软件架构进行扩张;设计设计是不可或缺的,除了优秀设计就是糟糕设计,根本不存在不做设计.有效设计(Effective Design)可以满足商业组织希望借助软件超越竞争原创 2021-04-06 22:13:43 · 560 阅读 · 0 评论 -
深入理解java虚拟机-第二章阅读笔记
目录2.2运行时数据区域2.2.1程序计数器(Program Counter Register)2.2.2 java虚拟机栈(Java Virtual Machine Stack)2.2.3 本地方法栈(Native Method Stacks)2.2.4 java堆2.3对象的创建2.3.1 对象的创建2.3.2 对象的内存布局2.3.3 对象的访问定位2.4 实战:OutOfMemoryError 异常2.4.1 java堆溢出2.4.2 虚拟机栈和本地方原创 2021-03-09 21:39:08 · 194 阅读 · 0 评论