
jvm
文章平均质量分 78
小潭渔
这个作者很懒,什么都没留下…
展开
-
JVM逃逸分析对性能的影响
逃逸分析(Escape Analysis)逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用,称为方法逃逸。甚至还有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的实例变量,称为线程逃逸。方法逃逸的几种方式如下:publ...转载 2018-04-25 15:28:37 · 383 阅读 · 0 评论 -
java虚拟机面试干货(七)— class的执行
在之前的文章中,我们大致总结了JVM的执行过程如下: 当class文件被类加载器加载到内存(栈)后,由执行引擎对字节码进行解析或等效处理后,最后输出结果。下面就说说这个执行引擎是如何工作的。栈帧栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。 栈帧存储了方法的局...转载 2018-05-23 10:49:07 · 265 阅读 · 0 评论 -
java虚拟机面试干货(六)— 垃圾回收:垃圾收集器
本文我们说说垃圾收集器,先明确几个概念: 串行(serial):单线程,按顺序依次执行多任务; 并行(Parallel):多线程,多个相同任务在一个实体上执行; 并发(Concurrent):多线程,多个不同任务在一个实体上执行; 明确好上面概念以后,有助于我们介绍下面的垃圾收集器:Serial收集器顾名思义,是一个单线程串行垃圾回收器,使用的是复制算法,运行时会stop the ...转载 2018-05-23 10:37:12 · 471 阅读 · 0 评论 -
java虚拟机面试干货(五)— 垃圾回收:回收算法
上篇文章我们分析了GC中对要回收对象的判断条件,这篇文章我们说说GC回收算法。标记-清除算法即mark-sweep算法。通过两个阶段完成,一是标记阶段,筛选出已经没有关联到GC Roots调用链的对象;二是清除,将这些标记处的对象删除。示意图如下: 但这个算法有2个问题:一是效率太低;二是内存碎片。产生的大量内存碎片因空间不连续,会导致再分配大对象时重新触发一次GC。复制算法...转载 2018-05-23 10:23:50 · 383 阅读 · 0 评论 -
java虚拟机面试干货(四)— 垃圾回收:判断条件
由上文我们可以大略总结出,在JVM中线程私有的变量是保存在栈上的,公共的对象保存在堆上,而静态变量保存在堆空间中的方法区(PermGen)上。由于系统分配给JVM的内存空间也是有限的,当一个对象不再使用时我们应该把它回收以释放空间,下面就说说垃圾回收(GC)的事儿。对象是否存活垃圾回收的第一步就是要判断,对象是否存活,即是否需要回收。通常情况下,判断对象是否存活的方式有两种:1. 引用...转载 2018-05-23 10:17:48 · 631 阅读 · 0 评论 -
java虚拟机面试干货(三)— JVM内存结构
本文说说JVM的内存结构,主要分为6个区域:程序计数器可看做是当前线程执行的字节码的行号指示器,字节码解释器就是通过改变这个计数器的值来获取下一条需要执行的字节码指令,完成分支、循环、跳转和异常处理等功能。虚拟机栈每创建一个线程时,JVM就会为这个线程创建一个对应的栈,所以栈是线程私有的。方法执行的时候还会创建一个栈帧在虚拟机栈上,用于存储局部变量表、操作数栈、动态链接、方法出口等...转载 2018-05-23 10:09:09 · 270 阅读 · 0 评论 -
java虚拟机面试干货(二)— 类的加载
本文讲讲当java文件已经被编译成class字节码后虚拟机如何加载。1. 加载等级JVM对class的加载采用双亲委派模型:如果一个类加载器收到类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器完成。每个类加载器都是如此,只有当父加载器在自己的搜索范围内找不到指定的类时(即ClassNotFoundException),子加载器才会尝试自己去加载。使用双亲委派模型...转载 2018-05-23 09:44:29 · 260 阅读 · 0 评论 -
java虚拟机面试干货(一)— 字节码生成
1. 总体流程简单来讲,一款编程语言想兼容底层(跨操作系统)的方式大概有两种:一是通过编译器,如C或C++。但是要针对不同硬件平台和操作系统开发不同的编译器,这样实现十分麻烦。二是通过中间语言,如Java、C#。代码被编译后生成中间语言,后由虚拟机负责解释和运行,虚拟机在运行期间将中间语言实时翻译成与特定底层平台匹配的机器指令并运行。 java语言声称可以“一次编译,到处运行(write o...转载 2018-05-22 19:59:34 · 1306 阅读 · 0 评论 -
JVM是如何执行线程同步的
JVM是如何执行线程同步的了解Java语言的人都知道,Java代码要想被JVM执行,需要被转换成由字节码组成的class文件。本文主要来分析下Java虚拟机是如何在字节码层面上执行线程同步的。1. 线程和共享数据Java语言的优点之一是它在语言层面上就对多线程的提供了支持。这种支持主要分集中在协调多个线程对共享数据的访问上。JVM的内存结构主要包含以下几个重要的区域:栈、堆、方法区...原创 2018-05-04 21:04:39 · 673 阅读 · 0 评论 -
JVM性能优化(五):Java的伸缩性
很多程序员在解决JVM性能问题的时候,花开了很多时间去调优应用程序级别的性能瓶颈,当你读完这本系列文章之后你会发现我可能更加系统地看待这类的问题。我说过JVM的自身技术限制了Java企业级应用的伸缩性。首先我们先列举一些主导因素。 (1)主流的硬件服务器提供了大量的内存 (2)分布式系统有大量内存的需求,而且该需求在持续增长 (3)一个普通Java应用程序所持有的对空间大概在1GB~4GB,...转载 2018-05-10 17:07:35 · 392 阅读 · 0 评论 -
JVM 性能优化(四): C4垃圾回收
本文是JVM性能优化 系列-第4篇。前3篇文章请参考文章结尾处的JVM优化系列文章。作为Eva Andreasson的JVM性能优化系列的第4篇,本文将对C4垃圾回收器进行介绍。使用C4垃圾回收器可以有效提升对低延迟有要求的企业级Java应用程序的伸缩性。 到目前为止,本系列的文章将stop-the-world式的垃圾回收视为影响Java应用程序伸缩性的一大障碍,而伸缩性又是现代企业级Java应...转载 2018-05-10 16:55:50 · 3925 阅读 · 0 评论 -
JVM之菜鸟进阶高手之路三
JVM之菜鸟进阶高手之路三 笨神大大分享:在微信小程序里面搜索:JVMPocket,这个小程序是笨神大大提供的,里面可以搜索相关JVM参数...转载 2018-05-03 20:16:22 · 136 阅读 · 0 评论 -
JVM之菜鸟进阶高手之路二(JVM的重要性,Xmn是跟请求量有关。)
JVM菜鸟进阶高手之路二(JVM的重要性,Xmn是跟请求量有关之) 今天看群聊jvm,通常会问ygc合适吗? 阿飞总结,可能需要2个维度,1.单位时间执行次数,2.执行时间ps -p pid -o etime 查看下进程的运行时间,17天才这么点ygc,(这里...转载 2018-05-03 20:11:12 · 194 阅读 · 0 评论 -
JVM之菜鸟进阶高手之路一
JVM 菜鸟进阶高手之路一 今天在JVMPocket群里面看见,阿牛发了一个gc截图,之后ak47截图了说特别恐怖,我就觉得好奇,去看看服务情况,截图日志如下关于jstat命令详情可以参考:https://docs.oracle.com/javase/8/docs/technotes/tool...转载 2018-05-03 20:02:24 · 170 阅读 · 0 评论 -
JVM性能优化(三):垃圾收集
Java平台的垃圾收集机制显著提高了开发者的效率,但是一个实现糟糕的垃圾收集器可能过多地消耗应用程序的资源。在Java虚拟机性能优化系列的第三部分,Eva Andreasson向Java初学者介绍了Java平台的内存模型和垃圾收集机制。她解释了为什么碎片化(而不是垃圾收集)是Java应用程序性能的主要问题所在,以及为什么分代垃圾收集和压缩是目前处理Java应用程序碎片化的主要办法(但不是最有新意的...转载 2018-05-10 16:13:30 · 168 阅读 · 0 评论 -
JVM性能优化(一)JVM技术入门
1. 概述Java应用程序是运行在JVM上的,但是你对JVM技术了解吗?这篇文章(这个系列的第一部分)讲述了经典Java虚拟机是怎么样工作的,例如:Java一次编写的利弊,跨平台引擎,垃圾回收基础知识,经典的GC算法和编译优化。之后的文章会讲JVM性能优化,包括最新的JVM设计——支持当今高并发Java应用的性能和扩展。 如果你是一个开发人员,你肯定遇到过这样的特殊感觉,你突然灵光一现,所有...转载 2018-05-10 15:06:52 · 196 阅读 · 0 评论 -
java虚拟机面试干货(八) — JVM配置参数
本文总结一下JVM中常用的配置参数。堆内存相关的JVM参数Xms 设置Java应用程序启动时的初始堆大小。-Xmx 设置Java应用程序能获得的最大堆大小。-Xss 设置线程桟的大小。-XX:MinHeapFreeRatio 设置堆空间最小空闲比例。当堆空间的空闲内存小于这个数值时,JWM便会扩展堆空间。-XX:MaxHeapFreeRatio 设置堆空间的最...转载 2018-05-23 10:50:48 · 329 阅读 · 0 评论