java代码是怎么运行的? jvm具体是怎么运行java字节码的? 在HotSpot里,有两种编译形式, 一种是解释执行,逐条将字节码翻译成机器码并执行。(无需等待编译) 一种是即时编译(Just in Time compilation)JIT ,将一个方法中包含的字节码编译成机器码再执行。(运行速度快) HotSpot 默认采用混合模式,综合了两者的优点。先解释执行字节码,将其中反复执行的热点代码,以方法为单位进行即时编译。 即时编译器: C1 又叫Client编译器,面向的是对启动性能有要求的或执行时间较短的,…

2021/10/25 0条评论 961点热度 0人点赞 阅读全文

3.2对象已死? 3.2.1 引用计数法 在对象中加入一个引用计数器;很难解决循环引用; 3.2.2 可达性分析算法 GC Roots包含以下: 虚拟机栈中引用的对象 方法区中类的静态属性引用的对象; 方法区中常量引用的对象; 本地方法栈中JNI引入的对象; 虚拟机内部引用,基本数据类型对应的class对象、常驻的异常对象、系统的类加载器; 同步锁持有的对象; 虚拟机内部的回调、本地代码缓存; 3.2.3 再谈引用 如果reference 类型的数据中存储的数值代表的是另外一块内存的起始地址;就称改referenc…

2021/06/01 0条评论 924点热度 0人点赞 阅读全文

13.2 线程安全 13.2.1 java语言中的线程安全 java语言中各种操作共享的数据分为以下五类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。 一、不可变 不可变的对象一定是线程安全了(废话,线程的不安全主要体现在增删改,只读没有任何不安全的地方) 如:java中的字符串实例是一个典型的不可变对象,用户调用内部的substring()、replace()这些方法都是返回一个新构造的字符串对象。 二、绝对线程安全 一 个类要达到“不管运行时环境如何,调用者都不需要任何额外的同步措施”可能需要付出非…

2021/04/08 0条评论 833点热度 0人点赞 阅读全文

第一章DDD对我而言 还可以指引构建正确软件模型的方向。 领域驱动对团队人的要求较高: 具备深厚的业务能力(领域专家) 具备业务抽象能力; 具备技术抽象能力 DDD 领域驱动设计 可以实现目标 如果你希望打磨软件匠艺并提高项目的成功率; 如果你迫切期望创造软件来帮助企业把业务竞争力提升到新高度; 如果你期望实现出来的软件既能正确地对业务需求建模又可以采用最新建的软件架构进行扩张; 设计 设计是不可或缺的,除了优秀设计就是糟糕设计,根本不存在不做设计. 有效设计(Effective Design) 可以满足商业组织希…

2021/04/06 0条评论 897点热度 0人点赞 阅读全文