
jvm
文章平均质量分 52
子非鱼yy
求知若饥,虚心若愚
展开
-
模拟JVM系统缓慢+CPU 100%+频繁Full GC问题的定位排查
文章目录一、问题说明二、执行代码三、发现问题四、排查问题1.普通排查2.使用`arthas`在线排查工具 一、问题说明 以下代码模拟了一个频繁FGC的场景: import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.原创 2022-04-21 00:21:02 · 3036 阅读 · 0 评论 -
Minor GC、Major GC和Full GC之间的区别
Minor GC 从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC。这一定义既清晰又易于理解。但是,当发生Minor GC事件的时候,有一些有趣的地方需要注意到: 1、当 JVM 无法为一个新的对象分配空间时会触发 Minor GC,比如当 Eden 区满了。所以分配率越高,越频繁执行 Minor GC。 2、内存池被填满的时候,其中的内容全部会被复制,...翻译 2019-02-15 15:04:25 · 617 阅读 · 0 评论 -
Java的动态分派和静态分派
前言 动态分派和静态分派机制是Java多态实现的原理。本文将针对这两种机制进行浅析。 静态分派 静态分派机制最典型的代码示例如下 void test() { Father father = new Son(); //静态分派 print(father); } void print(Father father) { ...原创 2019-02-22 11:15:50 · 560 阅读 · 0 评论 -
Java类初始化顺序说明
Java类初始化顺序说明 一个类中包含如下几类东西,他们前后是有顺序关系的 静态属性:static 开头定义的属性 静态方法块: static {} 圈起来的方法块 普通属性: 未带static定义的属性 普通方法块: {} 圈起来的方法块 构造函数: 类名相同的方法 方法: 普通方法 初始化顺序 public class LifeCycle { // 静态属性 private...原创 2019-02-22 11:34:03 · 460 阅读 · 0 评论 -
对Java虚拟机栈深度的理解
在读“深入理解Java虚拟机”一书时看到这个概念:在Java虚拟机规范中,对这个区域规定了两种异常状况:如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常;如果虚拟机栈可以动态扩展(当前大部分的Java虚拟机都可动态扩展,只不过Java虚拟机规范中也允许固定长度的虚拟机栈),如果扩展时无法申请到足够的内存,就会抛出OutOfMemoryError异常。 理解...原创 2019-02-13 11:51:18 · 3618 阅读 · 2 评论 -
初步诊断你的GC
前言 JVM的GC机制让Java程序员省去了自己垃圾回收的烦恼,大大提高了生产效率。但是正因为JVM垃圾回收机制足够优秀,导致很多Java程序员对JVM这个黑盒了解甚少,很多人没有去了解它,很多人也没机会去了解它。然而要想成为一名优秀的Java程序员,了解JVM和它的GC机制,写出JVM GC机制更喜欢的代码,是必须要掌握的一门技术; 这篇文章我主要说一下如何初步诊断JVM的GC是否正常,重点...原创 2019-03-21 09:40:16 · 3939 阅读 · 0 评论 -
JVM经典书籍
##JVM系列 学习JVM的相关资料 《深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)》 基于最新JDK1.7,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行全面而深入的分析,深刻揭示JVM的工作原理。以实践为导向,通过大量与实际生产环境相结合的案例展示了解决各种常见JVM问题的技巧和实践 《揭秘Java虚拟机:JVM设计原理与实现》 《...原创 2019-03-25 17:02:12 · 1399 阅读 · 0 评论 -
JVM性能调优
最近因项目存在内存泄漏,故进行大规模的JVM性能调优,现把经验做一记录。 一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:Perm转载 2017-09-08 14:15:08 · 538 阅读 · 0 评论 -
Java出错 Error:Could not create the Java Virtual Machine Error:A fatal exception has occurred
提示如下: scala compile server. error:could not create the java machine.Error: A fatal exception has occurred. program will exit. 这个原因是因为在安装JDK的时候在C:\Windows\System32生成的java.exe、javaw.exe、jav原创 2017-09-10 11:45:45 · 6571 阅读 · 1 评论 -
浅析JVM之内存管理
这是一篇有关JVM内存管理的文章。这里将会简单的分析一下Java如何使用从物理内存上申请下来的内存,以及如何来划分它们,后面还会介绍JVM的核心技术:如何分配和回收内存。 JMM ( Java Memory Model )概要 要理解JVM的内存管理策略,首先就要熟悉Java的运行时数据区,如上图所示,在执行Java程序的时候,虚拟机会把它所管理的内存划分为多个不同的数据区,称为运行时数据原创 2017-10-30 17:41:01 · 625 阅读 · 0 评论 -
JVM体系结构与工作方式概览
Java之所以号称“一次编译,到处运行”,主要原因是JVM屏蔽了各个计算机平台相关的软件(大多指系统)或者硬件之间的差异,使得与平台相关的耦合统一由JVM提供者来实现。在本文,笔者将与大家概览JVM的体系结构与工作方式。 JVM体系结构详解 JVM和实体机器的体系结构有点相似,主要由以下几个部分组成: 自己的指令集(篇幅过大,这里不会描述)类加载器(在JVM启动时或者在类运行时将需要的c原创 2017-10-30 17:48:14 · 634 阅读 · 0 评论 -
Java性能优化指南系列(一):概述和性能测试方法
Java性能分析是一门艺术和科学;科学指的是性能分析一般都包括大量的数字、测量和分析。绝大多数的性能工程师都有科学背景,运用科学的严谨是获取最大性能的重要组成部分。艺术部分指的是什么呢?性能调优是部分科学部分艺术的观点是很早就有的,但是关于性能的主题很少会给定特定的知识,这就是艺术的部分了,它和我们平常接受到的培训是不一样的,培训是确定了的。还有部分原因是对于某些人来说,性能调优是建立在深入的知识翻译 2017-11-16 10:33:32 · 1821 阅读 · 0 评论 -
Java性能优化指南系列(二):Java 性能分析工具
进行JAVA程序性能分析的时候,我们一般都会使用各种不同的工具。它们大部分都是可视化的,使得我们可以直观地看到应用程序的内部和运行环境到底执行了什么操作,所以性能分析(性能调优)是依赖于工具的。在第2章,我强调了基于数据驱动的性能测试是非常重要的,我们必须测试应用的性能并理解每个指标的含义。性能分析和数据驱动非常类似,为了提升应用程序的性能,我们必须获取应用运行的相关数据。如何获取这些数据并理解它翻译 2017-11-16 10:35:32 · 1838 阅读 · 0 评论 -
Java性能优化指南系列(三):理解JIT编译器
即时编译器概述 编译器在编译过程中通常会考虑很多因素。比如:汇编指令的顺序。假设我们要将两个寄存器的值进行相加,执行这个操作一般只需要一个CPU周期;但是在相加之前需要将数据从内存读到寄存器中,这个操作是需要多个CPU周期的。编译器一般可以做到,先启动数据加载操作,然后执行其它指令,等数据加载完成后,再执行相加操作。由于解释器在解释执行的过程中,每次只能看到一行代码,所以很难生成上述这样的高翻译 2017-11-16 10:36:39 · 1679 阅读 · 0 评论 -
eclipse启动gc日志打印
1、在eclipse根目录下的eclipse.ini配置文件中添加以下参数: -verbose:gc (开启打印垃圾回收日志) -Xloggc:eclipse_gc.log (设置垃圾回收日志打印的文件,文件名称可以自定义) -XX:+PrintGCTimeStamps (打印垃圾回收时间信息时的时间格式) -XX:+PrintGCDetails (打印垃圾回收详情) 添加完以上参数后当转载 2017-12-08 09:58:02 · 1316 阅读 · 0 评论 -
调用tomcat设置JVM参数
http://developer.51cto.com/art/201009/227325.htm 2010-09-25 13:13 stockwyz hexun.com 字号:T | T 这里向大家描述一下tomcat中如何设置JVM参数,默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError。 AD:2014WOT转载 2017-06-28 16:42:25 · 756 阅读 · 0 评论