自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 Class类文件结构—魔数、版本、常量池

类文件结构 概述 记得在第一节计算机程序课上我的老师就讲过:“计算机只认识0和1,所以我们写的程序需要经编译器翻译成由0和1构成的二进制格式才能由计算机执行”。20多年时间过去了,今天的计算机仍然只能识别0和1,但由于最近10年内虚拟机以及大量建立在虚拟机之上的程序语言如雨后春笋般出现并蓬勃发展,将我们编写的程序编译成二进制本地机器码(Native Code)已不再是唯...

2019-07-04 15:10:05 278

原创 JVM性能监控工具VisualVM

VisualVMVisualVM(All-in-One Java Troubleshooting Tool)是到目前为止随JDK发布的功能最强大的运行监视和故障处理程序,并且可以预见在未来一段时间内都是官方主力发展的虚拟机故障处理工具。官方在VisualVM的软件说明中写上了“All-in-One”的描述字样,预示着它除了运行监视、故障处理外,还提供了很多其他方面的功能。如性能分析Profil...

2019-07-04 14:53:57 274

原创 JVM性能监控可视化工具JConsole

JConsoleJConsole(Java Monitoring and Management Console)是一种基于JMX的可视化监视、管理工具。管理的是什么?管理的是监控信息、永久代的使用信息、类加载等等。怎么用?我们先来启动JConsole,进入我们的bin目录下,会弹出是本地进程还是远程进程的选择,如果你用java的可视化工具连接远程进程,那么参数是需要配置的JConsole连...

2019-07-04 14:48:02 343

原创 垃圾回收器各参数详解总结

垃圾回收器各参数总结 参数 描述 UseSerialGC 虚拟机运行在client模式下的默认值,打开此开关后,使用Serial+Serial Old的收集器组合进行内存回收 UseParNewGC 打开此开关后,使用ParNew+Serial Old的收集器组合进行内存回收 ...

2019-06-28 16:59:15 373

原创 G1收集器

开启G1的命令:-XX:UseG1GC,G1的设计目标是用来替代我们的CMS。G1具备的特点:1、并行与并发:G1能充分利用多CPU、多核环境下的硬件优势,使用多个CPU来缩短Stop the world停顿的时间,部分其他收集器原本需要停顿JAVA线程执行的GC动作,G1收集器仍然可以通过并发的方式让Java程序继续执行。2、分代收集:与其他收集器一样,分代概念在G1中依然得以保留,...

2019-06-28 16:58:10 147

原创 未来的垃圾回收ZGC

随着技术的更新,JDK11中出现了一种可扩展的低延迟垃圾收集器,ZGC特点:1、处理TB量级的堆。2、GC时间不超过10ms。3、与使用G1相比,应用吞吐量的降低不超过15%。ZGC为了实现这个目标引入了两种新技术:着色指针和读屏障。着色指针是一种将信息存储在指针(或Java术语引用)中的技术。因为在64位平台上(ZGC仅支持linux64),指针可以处理更多的内存,因此可以使...

2019-06-28 16:57:15 160

原创 JVM内存泄漏和内存溢出

相同与不同 内存泄漏和内存溢出在表现出来的形式上都是一样的,都会发生OOM异常。但是他们在本质上是有很大区别的,有什么不同,我们举个例子来说明,例如一个水桶有5升的容量,然后我现在池子里面有6升的水,要把6升的水放进我们的桶里,会发生什么情况呢?就会发生溢出,这就是内存溢出。内存泄漏的意思呢,就是我们还是一个5升的水桶,另外一个桶里有4升的水,但是这个水不干净,有许多石子和沙子,把这个4升...

2019-06-28 16:55:39 163

原创 JVM内存分配

1、对象优先在Eden区分配大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC。来看代码例子:package com.zhuguang.allen;import com.zhuguang.allen.tools.AddressPrint;/** * @ClassName TestAllocation$ * @...

2019-06-28 16:52:23 101

原创 虚拟机性能监控命令行工具详解

JDK的这些工具都放在我们的JDK的安装目录的bin目录下,D:\ProgramFiles\Java\jdk1.8.0_131\bin打开目录我们会发现除了常用的Java外,还有其他很多很多的工具,这些工具可以帮助我们来监控虚拟机的各种情况。 比较细心的同学,可能会注意到这些工具的程序体积都异常小巧。几乎所有工具的体积基本上都稳定在27KB左右。并非JDK开发团队刻意把它们制作得如此精炼来炫耀...

2019-06-28 16:43:12 282

原创 各种OOM的溢出实战及对象、布局、访问、对存活判断及引用

各种OOM的溢出实战及对象、布局、访问、对存活判断及引用一、虚拟机中的对象我们JAVA编程中无时无刻都在操作创建对象,那么我们虚拟机在遇到new关键词创建对象的执行过程是怎样的?1、例如我们有一个User类首先检查是否存在这个User类,然后看是否有没有被加载过,如果没有加载JVM会先进行User加载。2、加载完成后我们会在堆中分配特定大小的内存进行分配。(...

2019-06-19 14:47:49 383 1

原创 JAVA虚拟机的发展和数据区域详解

虚拟机的历史版本和JVM数据区域详解一、虚拟机的历史Sun Classic:Sun Classic VM的技术可能很原始,这款虚拟机的使命也早已终结,但仅凭它“世界上第一款商用Java虚拟机”的头衔,就足够有让历史记住它的理由,Sun公司发布JDK 1.0中所带的虚拟机就是Classic VM。这款虚拟机只能使用纯解释器方式来执行Java代码,如果要使用JIT编译器,就必须进行外...

2019-06-18 13:17:33 211

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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