个人简介

Echo Blog


江湖无名 安心练剑
  • JVM-GC 概览-15
    垃圾收集调整简介 从桌面上的小型applet到大型服务器上的Web服务,各种各样的应用程序都使用Java平台标准版(Java SE)。 为了支持这种多样化的部署,Java HotSpot VM提供了多个垃圾收集器,每个垃圾收集器都旨在满足不同的需求。 Java SE根据运行应用程序的计算机的类选择最合适的垃圾收集器。 但是,这种选择对于每个应用程序可能都不是最佳的。具有严格性能目标或...
    2018-10-08 15:36:46 | Java
  • java 线程安全之无状态类
    无状态类 有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。 无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象.不能保存数据,是不变类,是线程安全的。 无状态类例子:Servlet 线程安全类的一个很好的例子是java servle...
    2018-10-08 09:55:28 | Pattern
  • Java Immutable-Java 设计模式之不可变对象
    不可变对象 定义 如果某个对象在被创建后其状态就不能被修改,那么这个对象就称为不可变对象。 线程安全 线程安全性是不可变对象的固有属性之一,它们的不变性条件是由构造函数创建的,只要它们的状态不改变,那么这些不变性条件就能得以维持。 不可变对象一定是线程安全的。 当满足以下条件时,对象才是不可变的: 1) 对象创建以后其状态就不能修改。 2) 对象的所有域都是 final 类型...
    2018-10-08 09:55:28 | Pattern
  • Java 线程安全之 ThreadLocal 详解及源码分析
    ThreadLocal 典型的使用场景 典型使用场景: 每个线程都有一个独享的对象 通常是工具类 典型需要使用的类simpleDateFormat和Random每个thread内有自己的实例副本不共享 教材只有一本 每个人都抢着看 那么这终究会有线程安全问题 模拟场景 1000个线程都需要去打印日期 simpleDateForma...
    2018-10-08 09:55:28 | Java
  • JVM-13-runtime optimize
    概述 JIT 即时编译器(JIT=just in time compiler)定义:为了提高热点代码的执行效率,在运行时,虚拟机将把这些代码编译成与 本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器; 事实上,现在许多主流的商用虚拟机,都同时包含有解释器与编译器,解释器与编译器两者各有优势。与解释器相比,编译器会将常运行到的代码编译成本地代码区实现,可以获...
    2018-10-08 08:04:16 | JVM
  • JVM-13-compile optimize
    JVM编译器优化 JVM的编译器可以分为三个编译器: 1、前端编译器:把.java转变为.class的过程。如Sun的Javac、Eclipse JDT中的增量式编译器(ECJ)。 2、JIT编译器:把字节码转变为机器码的过程,如HotSpot VM的C1、C2编译器。 3、AOT编译器:静态提前编译器,直接将*.java文件编译本地机器代码的过程。 Javac编译器 Javac...
    2018-10-08 08:04:16 | JVM
  • JVM-12-远程执行代码
    整体思路 如果远程系统需要执行一段代码,但是我们现在又没有入口。 可以通过这种方式。 实际上对于日志信息,可能某个调用信息没有打印,也可以通过这个方式。 代码实现 核心代码 ByteUtils.java package org.jvm; /** * Bytes数组处理工具 */ public class ByteUtils { public static int ...
    2018-10-08 08:04:16 | JVM
  • JVM-11-字节码类加载实战
    类加载 OSGI 学习类加载机制 jboss 源码学习 JEE 标准 Tomcat 学习经典的类加载机制 动态字节码 以前使用 spring aop 最多使用的就是动态代理和动态字节码。 CBLIB AMS 不同 jdk 版本之间的转换 Retrotranslator 可以将 1.5 版本的 jdk 转换为以前的 jdk 版本。 参考资料 《深入理解 jvm》 ...
    2018-10-08 08:04:16 | JVM