GarfieldEr007的专栏

勤奋治学 深度思考 静心钻研 先苦后甜

JVM内存模型、指令重排、内存屏障概念解析

在高并发模型中,无是面对物理机SMP系统模型,还是面对像JVM的虚拟机多线程并发内存模型,指令重排(编译器、运行时)和内存屏障都是非常重要的概念,因此,搞清楚这些概念和原理很重要。否则,你很难搞清楚哪些操作是在并发先绝对安全的?哪些是相对安全的?哪些并发同步手段性能最低?valotile的二层语义...

2019-01-20 23:42:42

阅读数 76

评论数 0

1.6的锁优化(适应性自旋/锁粗化/锁削除/轻量级锁/偏向锁)

高效并发是JDK 1.6的一个重要主题,HotSpot虚拟机开发团队在这个版本上花费了大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁削除(Lock Elimination)、锁膨胀(Lock Coarsening)、轻量级锁(Lightweight Lock...

2019-01-20 23:17:25

阅读数 73

评论数 0

通过踩坑带你读透虚拟机的“锁粗化”

之前在学习volatile时,踩过一些坑。通过这些坑,学习了一些jvm的锁优化机制。后来在面试的过程中,被问到的概率还挺高。于是,我整理了这篇踩坑记录。 1. java多线程内存模型 在聊踩坑记录前,先要了解下java多线程内存模型。大家可通过“并发编程网”的一篇文章去学习这块知识,网址是ht...

2019-01-20 23:10:13

阅读数 46

评论数 0

JVM常用启动参数

目录 一、堆大小设置(堆 = 年轻代 + 年老代+ 持久代) 二、垃圾回收器设置(串行收集器、并行收集器、并发收集器 )   三、辅助信息参数设置 本文参考 jvm参数设置大全:http://www.cnblogs.com/marcotan/p/4256885.html 堆内存分配及g...

2019-01-19 18:20:26

阅读数 72

评论数 0

破坏双亲委派机制的那些事

前言 今天重读《深入理解Java虚拟》这本书,读到破坏双亲委派机制这一小节,其中有一段话,如下 双亲委派模型的第二次“被破坏”是由这个模型自身的缺陷所导致的,双亲委派很好地解决了各个类加载器的基础类的统一问题(越基础的类由越上层的加载器进行加载),基础类之所以称为“基础”,是因为它们总是作为...

2018-11-11 09:11:12

阅读数 114

评论数 0

类加载机制-双亲委派,破坏双亲委派--这一篇全了解

概述 概念 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接时候用的Java类型。 类的生命周期 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用、卸载。其中验证、准备、...

2018-11-11 09:11:05

阅读数 120

评论数 0

类加载器的双亲委派及打破双亲委派

一般的场景中使用Java默认的类加载器即可,但有时为了达到某种目的又不得不实现自己的类加载器,例如为了达到类库的互相隔离,例如为了达到热部署重加载功能。这时就需要自己定义类加载器,每个类加载器加载各自的类库资源,以此达到资源隔离效果。在对资源的加载上可以沿用双亲委派机制,也可以打破双亲委派机制。 ...

2018-11-11 09:10:59

阅读数 42

评论数 0

javac 编译与 JIT 编译

javac 编译与 JIT 编译 编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行: 其中绿色的模块可以选择性实现。很容易看出,上图中间的那条分支是解释执行的过程(即一条字节码一条字节码地...

2018-11-11 09:10:49

阅读数 50

评论数 0

深入理解JVM之JIT编译器(二)

上篇是分析了一下前段编译器,主要过程完成从java代码到字节码的转变,它的改进顶多是提高程序的编码速度和效率。本篇尝试探索JIT编译器,它能够完成从字节码到本地机器码的转变,从而真正的影响程序的运行效率。 概念 部分商用虚拟机,程序最初是通过解释器(Interpreter)进行解释执行,当发现...

2018-11-11 09:10:42

阅读数 72

评论数 0

深入理解JVM之前端编译器(一)

前两天在leetcode做了算法题,惊讶的发现用java实现的时间复杂度,竟然跻身于C/C++同列,甚至偶尔会超过后两者,虽然知道JVM功不可没,但还是很好奇在VM编译过程中到底发生了什么,翻出《深入理解java虚拟机》一探究竟,算是有所收获,记录如下。 概述 java语言的“编译期”其实是一...

2018-11-11 09:10:35

阅读数 69

评论数 0

对象在JVM中的表示: OOP-Klass模型

http://blog.csdn.net/linxdcn/article/details/72850375 本人基于上文做了简单的整理,解释及拓展,方便像和我一样不熟悉C++的人能更好的理解原文中的一些概念 介绍 HotSpot是基于c++实现,而c++是一门面向对象的语言,本身具备面向对...

2018-11-10 14:23:08

阅读数 64

评论数 0

Java虚拟机(二)对象的创建与OOP-Klass模型

相关文章  Java虚拟机系列 前言 在前一篇文章中我们学习了Java虚拟机的结构原理与运行时数据区域,那么我们大概知道了Java虚拟机的内存的概况,那么内存中的数据是如何创建和访问的呢?这篇文章会给你答案。 1.对象的创建 对象的创建通常是通过new一个对象而已,当虚拟机接收到一个new指令...

2018-11-10 14:20:58

阅读数 45

评论数 0

JVM 的 工作原理,层次结构 以及 GC工作原理

from: https://uestc-dpz.github.io   JVM Java 虚拟机 Java 虚拟机(Java virtual machine,JVM)是运行 Java 程序必不可少的机制。JVM实现了Java语言最重要的特征:即平台无关性。原理:编译后的 Java 程序指令并不...

2018-09-11 21:05:08

阅读数 160

评论数 0

全面理解Java内存模型(JMM)及volatile关键字

关联文章:深入理解Java类型信息(Class对象)与反射机制深入理解Java枚举类型(enum)深入理解Java注解类型(@Annotation)深入理解Java类加载器(ClassLoader)深入理解Java并发之synchronized实现原理Java并发编程-无锁CAS与Unsafe类及...

2018-06-09 13:58:41

阅读数 98

评论数 0

jvm参数详解

内存相关选项参数详解默认值-Xms初始堆大小---Xmx最大堆大小---Xmn年轻代大小(1.4or lator)整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3...

2018-06-01 08:57:51

阅读数 194

评论数 0

JVM实用参数(四)内存调优

理想的情况下,一个Java程序使用JVM的默认设置也可以运行得很好,所以一般来说,没有必要设置任何JVM参数。然而,由于一些性能问题(很不幸的是,这些问题经常出现),一些相关的JVM参数知识会是我们工作中得好伙伴。在这篇文章中,我们将介绍一些关于JVM内存管理的参数。知道并理解这些参数,将对开发者...

2018-06-01 08:57:16

阅读数 190

评论数 0

JVM监控与调优

光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之。通过学习,我觉得JVM监控与调优主要的着眼点在于如何配置、如何监控、如何优化3点上。下面就将针对这3点进行学习。(如果您对Java的内存区域划分和内存回收机制尚不明确,那在阅读本文前,请先阅读我的...

2018-06-01 08:56:39

阅读数 133

评论数 0

Java虚拟机学习(8):查看JVM参数及值的命令行工具

查看JVM各个参数值方式1. HotSpot vm中的各个globals.hpp文件  查看jvm初始的默认值及参数globals.hppglobals_extension.hppc1_globals.hppc1_globals_linux.hppc1_globals_solaris.hppc1_...

2018-06-01 08:55:38

阅读数 264

评论数 0

java jvm 参数 -Xms -Xmx -Xmn -Xss 调优总结

缘起 今天在对XML-security运行randoop时,出现了一个错误:在编译生成的测试用例时,java.lang.OutOfMemoryError: Java heap space。感觉很新奇,就上网查了一下。涉及点有这样的几点: javac, java.lang.OutOfMemoryEr...

2018-06-01 08:54:37

阅读数 755

评论数 0

JVM系列三:JVM参数设置、分析

不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程...

2018-06-01 08:53:35

阅读数 84

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭