个人简介

Echo Blog


江湖无名 安心练剑
  • JVM16--GC Ergonomics 人体工程学
    人机工程学(Ergonomics) 人机工程学是Java虚拟机(JVM)和垃圾收集启发式(例如基于行为的启发式)提高应用程序性能的过程。 JVM为垃圾收集器,堆大小和运行时编译器提供与平台相关的默认选择。 这些选择符合不同类型应用程序的需求,同时需要较少的命令行调整。 此外,基于行为的调优动态地优化堆的大小以满足应用程序的指定行为。 本节介绍这些默认选择和基于行为的调整。 在使用...
    2018-10-08 15:36:46 | Java
  • JVM-15-GC 概览
    垃圾收集调整简介 从桌面上的小型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