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