摘要:
1. 减少内存使用 1.1. 减少堆内存的使用 1.1.1. 使用更少的内存意味着堆被填满的频率会降低,需要的GC周期会更少,其效果也可以成倍增强 1.1.2. 更少的新生代回收意味着对象的晋升年龄增加的频率降低 1.1.3. 对象晋升到老年代的可能性也降低了 1.1.4. Full GC周期(或者 阅读全文
摘要:
1. 通用规则 1.1. 不要假设问题出在堆空间 1.2. 谨慎地创建对象并尽快丢弃它们 1.3. 使用更少的内存是提高垃圾回收器效率最好的办法 1.3.1. 减少内存使用是一个重要的目标 1.3.2. 和大多数性能优化主题一样,将精力集中于最大化利用现有内存会更有帮助 1.4. 对象重用方式 1. 阅读全文
摘要:
1. 术语 1.1. 堆指代Java堆 1.2. 原生内存指代JVM的非堆内存 1.2.1. 包括C堆 1.2.2. 非堆内存就是原生内存 1.2.3. 一些常见的JDK类常常会使用原生内存,请确保正确使用这些类 1.3. 一个应用程序总的内存占用 1.3.1. JVM使用的原生内存和堆内存的总和 阅读全文
摘要:
1. CPU相关代码 1.1. Advanced Vector Extensions 1.1.1. AVX 1.1.2. 2013年,Intel为Haswell以及之后的芯片引入了AVX2 1.1.3. 2016年,Intel又引入了AVX-512指令 1.1.4. JDK 8不支持这些指令 1.1 阅读全文
摘要:
1. 编译阈值 1.1. 一旦代码执行到一定次数,就达到了它的编译阈值,编译器就会认为它有足够的信息来编译代码 1.2. 在当前的JVM中,优化阈值的意义不大 1.2.1. 从JDK 7以及更早期遗留下来的 1.3. -XX:CompileThreshold=N 1.3.1. 当禁用分层编译时有效 阅读全文
摘要:
1. 基本信息 Java 实战(第二版)Modern Java in Action, 2nd Edition [英] 拉乌尔–加布里埃尔·乌尔玛(Raoul-Gabriel Urma),[意] 马里奥·富斯科(Mario Fusco),[英] 艾伦·米克罗夫特(Alan Mycroft) 著,陆明刚 阅读全文
摘要:
1. 回头看 日更坚持了59天,精读完《Java8函数式编程》《读Java实战(第二版)》这两本书,《读Java性能权威指南(第2版)》精读进行中。当月码字42413字,略低于上月千字(43690字),考虑到2月只有28天,少1月3天,这么算下来,日均码字数1514字略高于1月1409字,累计码字8 阅读全文
摘要:
1. 概览 1.1. 即时编译器是Java虚拟机的核心 1.1.1. just-in-time compiler,简称JIT compiler 1.1.2. 即时编译器会频繁地使用寄存器 1.2. 编译型语言 1.2.1. 程序是以二进制(编译后的)代码的形式发布的 1.2.1.1. 汇编代码是针对 阅读全文
摘要:
1. JPA 1.1. 性能直接受底层JDBC驱动性能的影响 1.2. 性能提升是通过改变实体类的字节码来实现的 1.2.1. 在类加载到JAR文件或者由JVM运行之前增强字节码的方法 1.2.1.1. 在编译过程中完成的 1.2.1.2. 在实体类编译完成后,它们会被传递给一个特定实现的后置处理器 阅读全文
摘要:
1. 影响数据库应用程序性能最重要的因素 1.1. JDBC驱动 1.1.1. JPA底层使用了JDBC 2. 瘦驱动 2.1. 为了让Java应用程序的内存占用很小 2.2. 依赖数据库服务器来完成更多的处理工作 3. 胖驱动 3.1. 工作从数据库移至Java应用程序 3.2. 进行更多处理、消 阅读全文