JVM-影响 gc 的因素-18
影响垃圾收集性能的因素
影响垃圾收集性能的两个最重要的因素是总可用内存和专用于年轻代的堆的比例。
总堆
影响垃圾收集性能的最重要因素是总可用内存。
由于集合在代数填满时发生,因此吞吐量与可用内存量成反比。
注意
以下有关堆的增长和收缩,堆布局和默认值的讨论使用串行收集器作为示例。
虽然其他收藏家使用类似的机制,但此处提供的详细信息可能不适用于其他收藏家。
有关其他收集...
2018-10-08 15:36:46 |
Java
JVM-GC 实现-17
垃圾收集器实现
Java SE平台的一个优势是它可以保护开发人员免受内存分配和垃圾收集的复杂性的影响。
但是,当垃圾收集是主要瓶颈时,了解实现的某些方面很有用。
垃圾收集器对应用程序使用对象的方式做出假设,这些可以反映在可调参数中,可以调整这些参数以提高性能,而不会牺牲抽象的功能。
世代垃圾收集
对象被认为是垃圾,当运行程序中任何其他活动对象的任何引用无法再访问它时,VM可以重用它...
2018-10-08 15:36:46 |
Java
JVM-GC Ergonomics-16
人机工程学(Ergonomics)
人机工程学是Java虚拟机(JVM)和垃圾收集启发式(例如基于行为的启发式)提高应用程序性能的过程。
JVM为垃圾收集器,堆大小和运行时编译器提供与平台相关的默认选择。
这些选择符合不同类型应用程序的需求,同时需要较少的命令行调整。
此外,基于行为的调优动态地优化堆的大小以满足应用程序的指定行为。
本节介绍这些默认选择和基于行为的调整。
在使用...
2018-10-08 15:36:46 |
Java
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