深入理解Java虚拟机
文章平均质量分 92
一个喝咖啡的人...
一个写湿的程序猿
练习两年半的程序猿。。。只因(ji)你太美!!!
初识不知文中意,再见已是文中人
展开
-
Java查漏补缺-从入门到精通汇总
Java查漏补缺(01)计算机的硬件与软件、软件相关介绍、计算机编程语言、Java语言概述、Java开发环境搭建、Java开发工具、注释、API文档、JVMJava查漏补缺(02)关键字、标识符、变量、基本数据类型介绍、基本数据类型变量间运算规则、计算机底层如何存储数据、运算符、字符集Java查漏补缺(03)顺序结构、分支语句、循环语句、关键字break和continue的使用、Scanner键盘输入功能的实现、如何获取一个指定范围的随机数Java查漏补缺(04)IDEA安装设置、JDK相关设置、详细设置、原创 2023-02-27 16:12:00 · 366 阅读 · 0 评论 -
深入理解Java虚拟机
深入理解Java虚拟机原创 2023-01-12 11:22:19 · 496 阅读 · 0 评论 -
Java查漏补缺(18)Java版本迭代概述、Java8新特性[Lambda表达式、函数式接口、方法引用与构造器引用、强大的Stream API]、新语法结构、API的变化、其它结构变化
从Java 9 这个版本开始,Java 的计划发布周期是 。这意味着Java的更新从传统的以的发布周期,转变为以的发布模式,并且承诺不会跳票。通过这样的方式,开发团队可以把一些关键特性尽早合并到 JDK 之中,以快速得到开发者反馈,在一定程度上避免出现像 Java 9 两次被迫延迟发布的窘况。针对企业客户的需求,Oracle 将以为周期发布长期支持版本(long term support)。Oracle 的官方观点认为:与 Java 7->8->9 相比,Java 9->10->11的升级和 8->8u20原创 2023-02-27 15:55:45 · 187 阅读 · 0 评论 -
Java查漏补缺(17)反射的概念、理解Class类并获取Class实例、类的加载与ClassLoader的理解、反射的基本应用、读取注解信息、体会反射的动态性
Reflection(反射)是被视为动态语言的关键,反射机制允许程序在运行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射。原创 2023-02-27 15:54:55 · 101 阅读 · 0 评论 -
Java查漏补缺(16)网络编程概述、网络通信要素、谈传输层协议:TCP与UDP协议、网络编程API、TCP网络编程、UDP网络编程、URL编程
Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制。并且 Java 实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。原创 2023-02-27 15:52:50 · 254 阅读 · 0 评论 -
Java查漏补缺(15)java.io.File类的使用、IO流原理及流的分类、节点流、处理流、其他流的使用、apache-common包的使用
File类及本章下的各种流,都定义在java.io包下。一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录(俗称文件夹),与平台无关。(体会万事万物皆对象)File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。File对象可以作为参数传递给流的构造器。想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。原创 2023-02-27 15:53:37 · 291 阅读 · 0 评论 -
Java查漏补缺(14)数据结构剖析、一维数组、链表、栈、队列、树与二叉树、List接口分析、Map接口分析、Set接口分析、HashMap的相关问题
/*** 添加元素throw new RuntimeException("数组已满,不可添加");size ++;} /*** 查询元素value在数组中的索引位置* @returni < size;} /*** 从当前数组中移除首次出现的value元素* @returni ++) {size --;} /*** 将数组中首次出现的oldValue替换为newValue* @return} /**原创 2023-02-27 15:51:22 · 288 阅读 · 0 评论 -
Java查漏补缺(13)泛型概述、使用泛型举例、自定义泛型结构、泛型在继承上的体现、通配符的使用
举例1:中药店,每个抽屉外面贴着标签举例2:超市购物架上很多瓶子,每个瓶子装的是什么,有标签举例3:家庭厨房中:Java中的泛型,就类似于上述场景中的标签。1、这种语法形式就叫泛型。的形式我们称为类型参数,这里的"类型"习惯上使用T表示,是Type的缩写。即:。:代表未知的数据类型,我们可以指定为,,等。类比方法的参数的概念,我们把,称为类型形参,将称为类型实参,有助于我们理解泛型这里的T,可以替换成K,V等任意字母。2、在哪里可以声明类型变量原创 2023-02-27 15:51:21 · 234 阅读 · 0 评论 -
Java查漏补缺(12)集合框架概述、Collection接口及方法、Iterator迭代器接口、Collection子接口[list、set]、Map接口、Collections工具类
一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用数组存储对象方面具有,而Java 集合就像一种容器,可以把多个对象的引用放入容器中。数组在内存存储方面的:数组初始化以后,长度就确定了。数组中的添加的元素是依次紧密排列的,有序的,可以重复的。数组声明的类型,就决定了进行元素初始化时的类型。不是此类型的变量,就不能添加。可以存储基本数据类型值,也可以存储引用数据类型的变量数组在存储数据方面的:Java 集合框架中的类可以用于存储多个,还可用于保存具有原创 2023-02-27 15:50:33 · 93 阅读 · 0 评论 -
Java查漏补缺(11)字符串[String]、可变字符串[StringBuffer、StringBuilder]、日期时间API、日期时间API、日期时间API、日期时间API
因为字符串对象设计为不可变,那么所以字符串有常量池来保存很多常量对象。JDK6中,字符串常量池在方法区。JDK7开始,就移到堆空间,直到目前JDK17版本。原创 2023-02-27 15:48:22 · 116 阅读 · 0 评论 -
Java查漏补缺(10)进程与线程的概念、创建和启动线程、Thread类的常用结构、多线程的生命周期、线程安全问题及解决、线程的同步、线程的通信、JDK5.0新增线程创建方式
Java语言的JVM允许程序运行多个线程,使用类代表线程,所有的线程对象都必须是Thread类或其子类的实例。Thread类的特性每个线程都是通过某个特定Thread对象的run()方法来完成操作的,因此把run()方法体称为线程执行体。通过该Thread对象的start()方法来启动这个线程,而非直接调用run()要想实现多线程,必须在主线程中创建新的线程对象。原创 2023-02-27 15:48:52 · 61 阅读 · 0 评论 -
Java查漏补缺(09)异常概述、Java异常体系、常见的错误和异常、异常的处理、手动抛出异常对象:throw、自定义异常
男主角小明每天开车上班,正常车程1小时。但是,不出意外的话,可能会出现意外。出现意外,即为异常情况。我们会做相应的处理。如果不处理,到不了公司。处理完了,就可以正常开车去公司。在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美客户输入数据的格式问题读取文件是否存在网络是否始终保持通畅等等。异常:指的是程序在执行过程中,出现的非正常情况,如果不处理最终会导致JVM的非正常停止。异常指的并不是语法错误和逻辑错误。语法错了,编译不通过,不会产生字节码文件,根本不能运行。原创 2023-02-27 15:48:06 · 279 阅读 · 0 评论 -
Java查漏补缺(08)关键字:static、单例设计模式、理解main方法、类的成员之四:代码块、final关键字、抽象类、接口、内部类、枚举类、注解、包装类
回顾类中的实例变量(即非static的成员变量)创建两个Circle对象:Circle类中的变量radius是一个实例变量(instance variable),它属于类的每一个对象,c1中的radius变化不会影响c2的radius,反之亦然。如果想让一个成员变量被类的所有实例所共享,就用static修饰即可,称为类变量(或类属性)!当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。原创 2023-02-27 15:45:55 · 143 阅读 · 0 评论 -
Java查漏补缺(07)关键字:this、面向对象特征二:继承、方法的重写、4种权限修饰、关键字:super、子类实例化全过程、面向对象特征三:多态、Object类的使用
财产继承:绿化:前人栽树,后人乘凉“绿水青山,就是金山银山”样貌:继承之外,是不是还可以"进化":继承有延续(下一代延续上一代的基因、财富)、扩展(下一代和上一代又有所不同)的意思。原创 2023-02-27 15:46:06 · 75 阅读 · 0 评论 -
Java查漏补缺(06)面向对象编程概述、类和对象、对象的内存解析、类的成员之一:成员变量、类的成员之二:方法、对象数组、关键字、面向对象特征一:封装性、类的成员之三:构造器、阶段性知识补充
面向对象,是软件开发中的一类编程风格、开发范式。除了面向对象,还有面向过程指令式编程和函数式编程。在所有的编程范式中,我们接触最多的还是面向过程和面向对象两种。类比:史书类型纪传体:以人物传记为中心,“本纪”叙述帝王,“世家”记叙王侯封国和特殊人物,“列传”记叙民间人物。编年体:按年、月、日顺序编写。国别体:是一部分国记事的历史散文,分载多国历史。早期先有面向过程思想,随着软件规模的扩大,问题复杂性的提高,面向过程的弊端越来越明显,出现了面向对象思想并成为目前主流的方式。原创 2023-02-27 15:12:18 · 169 阅读 · 0 评论 -
Java查漏补缺(05)数组的概述、一维数组的使用、一维数组内存分析、一维数组的应用、多维数组的使用、数组的常见算法、Arrays工具类的使用、数组中的常见异常
需要统计某公司50个员工的工资情况,例如计算平均工资、找到最高工资等。用之前知识,首先需要声明50个变量来分别记录每位员工的工资,这样会很麻烦。因此我们可以将所有的数据全部存储到一个容器中统一管理,并使用容器进行计算。水杯(装水等液体),衣柜(装衣服等物品),集装箱(装货物等)。将多个数据存储到一起,每个数据称为该容器的元素。因为第一个元素距离数组首地址间隔0个单元格。Java 语言里提供了支持多维数组的语法。如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格。原创 2023-02-27 15:09:49 · 98 阅读 · 0 评论 -
Java查漏补缺(04)IDEA安装设置、JDK相关设置、详细设置、工程与模块管理、代码模板的使用、快捷键的使用、DEBUG断点调试、常用插件
IDEA,是 JetBrains ()公司的产品,该公司成立于2000年,总部位于捷克的布拉格,致力于为开发者打造最高效智能的开发工具。WebStorm:用于开发 JavaScript、HTML5、CSS3 等前端技术PyCharm:用于开发 pythonPhpStorm:用于开发 PHPRubyMine:用于开发 Ruby/RailsAppCode:用于开发 Objective - C/SwiftCLion:用于开发 C/C++DataGrip:用于开发数据库和 SQL。原创 2023-02-27 15:09:02 · 240 阅读 · 0 评论 -
Java查漏补缺(03)顺序结构、分支语句、循环语句、关键字break和continue的使用、Scanner键盘输入功能的实现、如何获取一个指定范围的随机数
流程控制语句是用来控制程序中各的语句,可以把语句组合成能的小逻辑模块。程序设计中规定的流程结构,即:顺序结构分支结构根据条件,选择性地执行某段代码。有和两种分支语句。循环结构根据循环条件,重复性的执行某段代码。有、、三种循环语句。补充:JDK5.0 提供了循环,方便的遍历集合、数组元素。(第12章集合中讲解)生活中、工业生产中流程控制举例顺序结构就是程序地执行。表达式语句都是顺序执行的。并且上一行对某个变量的修改对下一行会产生影响。Java中定义变量时采用合法的。如:错误形式:2. 分支语句2.1原创 2023-02-27 15:08:03 · 130 阅读 · 0 评论 -
Java查漏补缺(02)关键字、标识符、变量、基本数据类型介绍、基本数据类型变量间运算规则、计算机底层如何存储数据、运算符、字符集
Java各整数类型有固定的表数范围和字段长度,不受具体操作系统的影响,以保证Java程序的可移植性。定义long类型的变量,赋值时需要以"l"或"L"作为后缀。Java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long。Java的整型常量默认为 int 型。原创 2023-02-27 15:08:37 · 340 阅读 · 0 评论 -
Java查漏补缺(01)计算机的硬件与软件、软件相关介绍、计算机编程语言、Java语言概述、Java开发环境搭建、Java开发工具、注释、API文档、JVM
软件,即一系列按照特定顺序组织的计算机数据和指令的集合。有系统软件和应用软件之分。Pascal之父Nicklaus Wirth: “Programs = Data Structures + Algorithms”系统软件:是SUN(Stanford University Network,斯坦福大学网络公司 )1995年推出的一门高级编程语言。是一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些Java程序被称为Java小程序。原创 2023-02-27 15:06:15 · 195 阅读 · 0 评论 -
<JVM上篇:内存与垃圾回收篇>01-JVM与Java体系结构
01-JVM与Java体系结构1. 前言2. 为什么要学习JVM?3. Java生态圈4. Java发展的重大事件5. 虚拟机与Java虚拟机1. 前言作为开发人员的你曾被伤害过吗?是否也遇到过这些问题?运行着的线上系统突然卡死,系统无法访问,甚至直接OOM想解决线上JVM GC问题,但却无从下手新项目上线,对各种JVM参数设置一脸茫然,直接默认吧,然后就GG了在实际项目中如何- 调优VM参数,如何解决GC、OOM等问题,一脸懵逼开发人员如何看待上层框架一些有一定工作经转载 2021-11-01 17:43:11 · 172 阅读 · 0 评论 -
<JVM上篇:内存与垃圾回收篇>02-类加载子系统
2. 类加载子系统2.1. 内存结构概述2.1. 内存结构概述Class 文件类加载子系统运行时数据区方法区堆程序计数器虚拟机栈本地方法栈执行引擎本地方法接口本地方法库转载 2021-11-02 16:14:54 · 82 阅读 · 0 评论 -
<JVM上篇:内存与垃圾回收篇>03-运行时数据区及程序计数器
3. 运行时数据区及程序计数器3.1. 运行时数据区3.1.1. 概述3.1.2. 线程3.1.3. JVM 系统线程3.2. 程序计数器(PC 寄存器)3.1. 运行时数据区3.1.1. 概述本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段当我们通过前面的:类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区内存是非常重要的系统资源,是硬盘和 CPU转载 2021-11-02 16:15:31 · 133 阅读 · 0 评论 -
<JVM上篇:内存与垃圾回收篇>04-虚拟机栈
04-虚拟机栈4.1. 虚拟机栈概述4.1.1. 虚拟机栈出现的背景4.1.2. 初步印象4.1.3. 内存中的栈与堆4.1.4. 虚拟机栈基本内容4.2. 栈的存储单位4.2.1. 栈中存储什么?4.2.2. 栈运行原理4.2.3. 栈帧的内部结构4.3. 局部变量表(Local Variables)4.3.1. 关于 Slot 的理解4.3.2. Slot 的重复利用4.3.3. 静态变量与局部变量的对比4.3.4. 补充说明4.4. 操作数栈(Operand Stack)4.1. 虚拟机栈概述4.转载 2021-11-01 17:44:26 · 144 阅读 · 0 评论 -
<JVM上篇:内存与垃圾回收篇>05-本地方法接口和本地方法栈
5-本地方法接口和本地方法栈5.1. 什么是本地方法?5.2. 为什么使用 Native Method?5.2. 本地方法栈5.1. 什么是本地方法?简单地讲,一个 Native Method 是一个 Java 调用非 Java 代码的接囗。一个 Native Method 是这样一个 Java 方法:该方法的实现由非 Java 语言实现,比如 C。这个特征并非 Java 所特有,很多其它的编程语言都有这一机制,比如在 C++中,你可以用 extern “c” 告知 c++编译器去调用一个 c 的函数。转载 2021-11-11 17:19:12 · 66 阅读 · 0 评论 -
<JVM上篇:内存与垃圾回收篇>06-堆
6-堆6.1. 堆(Heap)的核心概述6.1.1. 堆内存细分6.1.2. 堆空间内部结构(JDK7)6.1.3. 堆空间内部结构(JDK8)6.2. 设置堆内存大小与 OOM6.2.1. 堆空间大小的设置6.2.2. OutOfMemory 举例6.3. 年轻代与老年代6.4. 图解对象分配过程6.5. Minor GC,MajorGC、Full GC6.5.1. 最简单的分代式 GC 策略的触发条件6.6. 堆空间分代思想6.1. 堆(Heap)的核心概述堆针对一个 JVM 进程来说是唯一的,也就转载 2021-11-11 17:19:47 · 130 阅读 · 0 评论 -
<JVM上篇:内存与垃圾回收篇>07-方法区
07-方法区7.1. 栈、堆、方法区的交互关系7.2. 方法区的理解7.2.1. 方法区在哪里?7.2.2. 方法区的基本理解7.2.3. HotSpot 中方法区的演进7.3. 设置方法区大小与 OOM7.3.1. 设置方法区内存的大小从线程共享与否的角度来看7.1. 栈、堆、方法区的交互关系7.2. 方法区的理解官方文档:Chapter 2. The Structure of the Java Virtual Machine (oracle.com)7.2.1. 方法区在哪里?《Ja转载 2021-11-17 17:50:32 · 85 阅读 · 0 评论 -
<JVM上篇:内存与垃圾回收篇>08-对象实例化及直接内存
08-对象实例化及直接内存8.1. 对象实例化8.1.1. 创建对象的方式8.1.2. 创建对象的步骤8.2.1. 对象头(Header)8.2.2. 实例数据(Instance Data)8.2.3. 对齐填充(Padding)8.3. 对象的访问定位8.3.1. 句柄访问8.1. 对象实例化面试题美团:对象在 JVM 中是怎么存储的?对象头信息里面有哪些东西?蚂蚁金服:Java 对象头有什么?8.1.1. 创建对象的方式new:最常见的方式、Xxx 的静态方法,XxxB转载 2021-11-17 17:50:50 · 110 阅读 · 0 评论 -
<JVM上篇:内存与垃圾回收篇>09-执行引擎
09-执行引擎9.1. 执行引擎概述9.1.1. 执行引擎的工作流程9.2. Java 代码编译和执行过程9.2.1. 什么是解释器(Interpreter)?什么是 JIT 编译器?9.2.2. 为什么 Java 是半编译半解释型语言?9.3. 机器码、指令、汇编语言9.3.1. 机器码9.3.2. 指令9.3.3. 指令集9.3.4. 汇编语言9.3.5. 高级语言9.3.6. 字节码9.4. 解释器9.4.1. 解释器工作机制9.4.2. 解释器分类9.4.3. 现状9.5. JIT 编译器9.5.1转载 2023-01-12 10:11:56 · 83 阅读 · 0 评论 -
<JVM上篇:内存与垃圾回收篇>10-StringTable
10-StringTable10.1. String 的基本特性10.1.2. String的基本特性10.2. String的内存分配10.3. String的基本操作10.4. 字符串拼接操作10.5. intern()的使用10.5.1. intern的使用:JDK6 vs JDK7/810.5.2. intern的效率测试:空间角度10.6. StringTable的垃圾回收10.7. G1中的String去重操作10.1. String 的基本特性String 字符串,使用一对""引起来表转载 2023-01-12 10:12:45 · 223 阅读 · 0 评论 -
<JVM上篇:内存与垃圾回收篇>11-垃圾回收概述及算法
11-垃圾回收概述及算法11.1. 垃圾回收概述11.1.1. 什么是垃圾?11.1.2. 为什么需要GC11.1.3. 早期垃圾回收11.1.4. Java垃圾回收机制11.2. 垃圾回收相关算法11.2.1. 标记阶段:引用计数算法11.2.2. 标记阶段:可达性分析算法11.2.3. 对象的 finalization 机制生存还是死亡?具体过程11.2.4. MAT 与 JProfiler 的 GC Roots 溯源MAT 是什么?获取 dump 文件(三种方式)JProfiler 的 GC Root转载 2021-11-30 09:25:14 · 167 阅读 · 0 评论 -
<JVM上篇:内存与垃圾回收篇>12-垃圾回收相关概念
12. 垃圾回收相关概念12.1. System.gc()的理解12.2. 内存溢出与内存泄露内存溢出(OOM)内存泄漏(Memory Leak)12.3. Stop The World12.4. 垃圾回收的并行与并发并发(Concurrent)并行(Parallel)并发 vs 并行垃圾回收的并发与并行12.5. 安全点与安全区域安全点抢先式中断:(目前没有虚拟机采用了)主动式中断安全区域(Safe Resion)实际执行时:12.6. 再谈引用:强引用12.8. 再谈引用:软引用12.9. 再谈引用:弱转载 2021-11-30 09:26:26 · 96 阅读 · 0 评论 -
<JVM上篇:内存与垃圾回收篇>13-垃圾回收器
13. 垃圾回收器13.1. GC 分类与性能指标13.1.1. 垃圾回收器概述13.1.2. 垃圾收集器分类13.1.3. 评估 GC 的性能指标吞吐量暂停时间吞吐量 vs 暂停时间13.2. 不同的垃圾回收器概述13.2.1. 垃圾回收器发展史13.2.2. 7 种经典的垃圾收集器13.2.3. 7 款经典收集器与垃圾分代之间的关系13.2.4. 垃圾收集器的组合关系13.2.5. 不同的垃圾收集器概述13.2.6. 如何查看默认垃圾收集器13.3. Serial 回收器:串行回收13.4. ParNe转载 2021-11-30 09:27:09 · 186 阅读 · 0 评论 -
<JVM中篇:字节码与类的加载篇>01-class文件结构
01-class文件结构1.1. Class 字节码文件结构1.2. Class 文件数据类型1.3. 魔数1.4. 文件版本号1.4.1. Class 文件版本号对应关系1.5. 常量池集合1.5.1. 常量池计数器1.5.2. 常量池表Ⅰ. 字面量和符号引用Ⅱ. 常量类型和结构1.6. 访问标志1.7. 类索引、父类索引、接口索引1.7.1. this_class(类索引)1.7.2. super_class(父类索引)1.7.3. interfacesⅠ. interfaces_count(接口计数器转载 2023-01-12 10:10:18 · 236 阅读 · 0 评论 -
<JVM中篇:字节码与类的加载篇>02-字节码指令集
02-字节码指令集2.1. 概述2.1.1. 执行模型2.1.2. 字节码与数据类型2.1.3. 指令分析2.2. 加载与存储指令2.2.1. 作用2.2.2. 常用指令2.1. 概述2.1.1. 执行模型如果不考虑异常处理的话,那么Java虚拟机的解释器可以使用下面这个伪代码当做最基本的执行模型来理解do{ 自动计算PC寄存器的值加1; 根据PC寄存器的指示位置,从字节码流中取出操作码; if(字节码存在操作数) 从字节码流中取出操作数; 执行操作码所定义的操作;转载 2023-01-03 16:16:39 · 347 阅读 · 0 评论 -
<JVM中篇:字节码与类的加载篇>03-类的加载过程(类的生命周期)
在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载。按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段:其中,验证、准备、解析3个部分统称为链接(Linking)从程序中类的使用过程看面试题蚂蚁金服:描述一下JVM加载Class文件的原理机制?类加载过程百度:类加载的时机java类加载过程?简述java类加载机制?腾讯:JVM中类加载机制,类加载过程?转载 2023-01-03 16:18:11 · 149 阅读 · 0 评论 -
<JVM中篇:字节码与类的加载篇>04-再谈类的加载器
类加载器是JVM执行类加载机制的前提。ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载的,ClassLoader负责通过各种方式将Class信息的二进制数据流读入JVM内部,转换为一个与目标类对应的对象实例。然后交给Java虚拟机进行链接、初始化等操作。因此,ClassLoader在整个装载阶段,只能影响到类的加载,而无法通过ClassLoader去改变类的链接和初始化行为。至于它是否可以运行,则由Execution Engine决定。转载 2023-01-03 16:18:35 · 168 阅读 · 0 评论 -
<JVM下篇:性能监控与调优篇>01-概述篇
支付宝三面:JVM性能调优都做了什么?有做过JVM内存优化吗?从SQL、JVM、架构、数据库四个方面讲讲优化思路JVM的编译优化jvm性能调优都做了什么JVM诊断调优工具用过哪些?二面:jvm怎样调优,堆内存、栈空间设置多少合适三面:JVM相关的分析工具使用过的有哪些?具体的性能调优步骤如何如何进行JVM调优?有哪些方法?如何理解内存泄漏问题?有哪些情况会导致内存泄漏?如何解决?三面:JVM如何调优、参数怎么调?从SQL、JVM、架构、数据库四个方面讲讲优化思路。转载 2023-01-03 16:19:11 · 82 阅读 · 0 评论 -
<JVM下篇:性能监控与调优篇>02-JVM监控及诊断工具-命令行篇
性能诊断是软件工程师在日常工作中需要经常面对和解决的问题,在用户体验至上的今天,解决好应用的性能问题能带来非常大的收益。Java 作为最流行的编程语言之一,其应用性能诊断一直受到业界广泛关注。可能造成 Java 应用出现性能问题的因素非常多,例如线程控制、磁盘读写、数据库访问、网络I/O、垃圾收集等。想要定位这些问题,一款优秀的性能诊断工具必不可少。体会1:使用数据说明问题,使用知识分析问题,使用工具处理问题。体会2:无监控、不调优!简单命令行工具。转载 2023-01-03 16:20:21 · 205 阅读 · 0 评论 -
<JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇
无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时间等(这对定位应用性能瓶颈至关重要)。要求用户登录到目标 Java 应用所在的宿主机上,使用起来不是很方便。分析数据通过终端输出,结果展示不够直观。为此,JDK提供了一些内存泄漏的分析工具,如jconsole,jvisualvm等,用于辅助开发人员定位问题,但是这些工具很多时候并不足以满足快速定位的需求。所以这里我们介绍的工具相对多一些、丰富一些。JDK自带的工具jconsole:JDK自带的可视化监控工具。转载 2023-01-03 16:20:27 · 213 阅读 · 0 评论