王知无(import_bigdata)
微信搜:import_bigdata
GitHub搜:https://github.com/wangzhiwubigdata/God-Of-BigData
展开
-
【硬刚JVM】JVM 专题一:虚拟机(一)
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 虚拟机1.1 什么是虚拟机?虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。 所谓虚拟机,就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。1.2 虚拟机可以分为两类:系统虚拟机:它们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台,比如Visual Box,VMware。原创 2021-09-24 22:11:35 · 472 阅读 · 0 评论 -
【硬刚JVM】JVM 专题二:虚拟机(二)Java虚拟机
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。2.1 什么是Java虚拟机?Java虚拟机是一台执行字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成。 JVM平台的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回收机制,以及可靠的即时编译器。 Java技术的核心就是Java虚拟机,因为所有的Java程序都运行在Java虚拟机内部。 |可以这样理解JVM类似于一台小电脑运行在...原创 2021-09-24 22:16:27 · 436 阅读 · 0 评论 -
【硬刚JVM】JVM 专题三:类加载子系统(一)类装载器子系统
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。类装载器子系统1.1 什么是类装载子系统?类装载器子系统负责从文件系统或者网络中加载Class文件,Class文件在文件开头有特定的文件标识(魔数)。 类装载器子系统(ClassLoader)只负责Class文件的加载,至于它是否可以运行,则由Execution Engine决定。|你妈妈[ClassLoader]给你[Execution Engine]找到相亲姑娘,是否能成得看你自己的本事.原创 2021-09-24 22:37:18 · 475 阅读 · 0 评论 -
【硬刚JVM】JVM 专题四:类加载子系统(二)双亲委派机制
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。2. 双亲委派机制2.1 双亲委派机制工作原理2.1.1 原理Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存,生成class对象。 加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式。2.1.2 举例说明1.自定义一个java.lang.String,然后在另原创 2021-09-24 22:39:59 · 363 阅读 · 0 评论 -
【硬刚JVM】JVM 专题五:类加载子系统(三)补充内容
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。3. 补充内容3.1 在jvm中表示两个class对象是否为同一个类的两个必要条件类的完整类名必须一致,包括包名。 加载这个类的ClassLoader(指ClassLoader实例对象)必须相同|换句话说,在jvm中,即使这两个类对象(class对象)来源同一个Class文件,被同一个虚拟机所加载,但只要加载它们的ClassLoader实例对象不同,那么这两个类对象也是不相等的.|自定..原创 2021-09-24 22:42:03 · 299 阅读 · 0 评论 -
【硬刚JVM】JVM 专题六:运行时数据区(一)概述
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 运行时数据区架构图2. 内存内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了JAVA在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的jvm对于内存的划分方式和管理机制存在着部分差异(对于Hotspot主要指方法区)3. 分区介绍Java虚拟机定义了若干种程序运行期间会使用到的运行时数据原创 2021-09-24 22:45:03 · 313 阅读 · 0 评论 -
【硬刚JVM】JVM 专题七:运行时数据区(二)程序计数器
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1.程序计数器1. 什么是PC寄存器(程序计数器)?JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。JVM中的PC寄存器并不是广义上所指的物理寄存器,是对物理PC寄存器的一种抽象模拟。 它是一块很小的内存空间,几乎可以忽略不计。也是运行速度最快的存储区域原创 2021-09-24 22:49:42 · 310 阅读 · 0 评论 -
【硬刚JVM】JVM 专题八:运行时数据区(三)虚拟机栈
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。2.虚拟机栈1. 概述1.1 虚拟机栈出现背景由于跨平台性的设计,java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令1.2 内存中的堆与栈栈是运行时的单位,而堆是存储的单位|栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题..原创 2021-09-24 23:18:12 · 315 阅读 · 0 评论 -
【硬刚JVM】JVM 专题九:运行时数据区(四)本地方法栈
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1.、本地方法栈2、什么是本地方法栈?1.Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用2.本地方法栈,也是线程私有的。3.允许被实现成固定或者是可动态拓展的内存大小。(在内存溢出方面是相同的)|如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个StackOverFlowError异常。|如果本地方法栈可以动态...原创 2021-09-24 23:47:31 · 296 阅读 · 0 评论 -
【硬刚JVM】JVM 专题十:运行时数据区(五)堆
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 核心概述1.1 堆概述1.一个进程对应一个jvm实例,一个运行时数据区,又包含多个线程,这些线程共享了方法区和堆,每个线程包含了程序计数器、本地方法栈和虚拟机栈。2.一个jvm实例只存在一个堆内存,堆也是java内存管理的核心区域| 配置jvm及查看jvm进程3.Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间|...原创 2021-09-25 00:16:51 · 330 阅读 · 0 评论 -
【硬刚JVM】JVM 专题十一:运行时数据区(六)方法区
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 栈、堆、方法区关系交互运行时数据区结构图:从线程共享与否的角度来看:2. 方法区的理解2.1 方法区在哪里?《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。”但对于HotSpotJVM而言,方法区还有一个别名叫做Non-heap(非堆),目的就是要和堆分开。所以,方法区可以看作是一原创 2021-09-25 00:33:55 · 316 阅读 · 0 评论 -
【硬刚JVM】JVM 专题十二:运行时数据区(七)对象的实例化内存布局与访问定位
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 对象的实例化1.1 创建对象的方式1.new最常见的方式 变形1 : Xxx的静态方法 变形2 : XxBuilder/XxoxFactory的静态方法2.Class的newInstance():反射的方式,只能调用空参的构造器,权限必须是public3.Constructor的newInstance(Xxx):反射的方式,可以调用空参、带参的构造器,权限没有要求4.使用c原创 2021-09-25 00:42:16 · 1141 阅读 · 0 评论 -
【硬刚JVM】JVM 专题十三:运行时数据区(八)直接内存
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 直接内存1.不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。2.直接内存是Java堆外的、直接向系统申请的内存区间。3.来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存。IO:阻塞式 NIO:非阻塞式4.通常,访问直接内存的速度会优于Java堆。即读写性能高因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存原创 2021-09-25 00:48:01 · 294 阅读 · 0 评论 -
【硬刚JVM】JVM 专题十四:本地方法接口
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 本地方法接口2. 什么是本地方法?1.简单来讲,一个Native Method就是一个Java调用非Java代码的接口。一个Native Method是这样一个java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java特有,很多其他的编程语言都有这一机制,比如在C++ 中,你可以用extern “C” 告知C++ 编译器去调用一个C的函数。2.在定义一个nati原创 2021-09-25 00:53:46 · 298 阅读 · 0 评论 -
【硬刚JVM】JVM 专题十五:执行引擎
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 执行引擎概述1.1 执行引擎1.2 概述1.执行引擎是Java虚拟机的核心组成部分之一。2.虚拟机是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。3原创 2021-09-25 01:13:15 · 312 阅读 · 0 评论 -
【硬刚JVM】JVM 专题十六:StringTable
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. String的基本特性1.String:字符串,使用一对""引起来表示。2.String声明为final的,不可被继承。3.String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示String可以比较大小。4.String在jdk8及以前内部定义了final char[] value用于存储字符串数据。jdk9时改为byte[原创 2021-09-25 01:33:41 · 309 阅读 · 0 评论 -
【硬刚JVM】JVM 专题十七:垃圾回收(一)简述
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 什么是垃圾1.1 C++与Java1.2 概述1.垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。2.关于垃圾收集有三个经典问题哪些内存需要回收? 什么时候回收? 如何回收?3.垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展,Java的垃原创 2021-09-25 01:39:43 · 304 阅读 · 0 评论 -
【硬刚JVM】JVM 专题十八:垃圾回收(二)垃圾回收相关算法
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. 标记阶段1.1 引用计数算法1.1.1 对象存活判断1.在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GCオ会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。2.那么在JVM中究竟是如何标记一个死亡对象呢?简单来说,当一个对象已经不再被任何的存活对原创 2021-09-25 01:56:44 · 283 阅读 · 0 评论 -
【硬刚JVM】JVM 专题十九:垃圾回收(三)垃圾回收相关概念
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. System.gc()的理解1.在默认情況下,通过System.gc()或者Runtime. getRuntime().gc()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。2.然而System.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用(仅仅是提醒垃圾回收,会不会回收不一定)。3.JVM实现者可以通过System.gc()调原创 2021-09-25 02:08:45 · 364 阅读 · 0 评论 -
【硬刚JVM】JVM 专题二十:垃圾回收(四)垃圾回收器 (一)
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。1. GC分类与性能指标垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。由于JDK的版本处于高速迭代过程中,因此Java发展至今已经产生了众多的GC版本。从不同角度分析垃圾收集器,可以将GC分为不同的类型。1.1 GC分类1.按线程数(垃圾回收的线程)分可以分为串行垃圾回收器和并行垃圾回收器。串行回收指的是在同一时间段内只允许有一个CPU用于执行垃圾回收原创 2021-09-25 02:16:37 · 323 阅读 · 0 评论 -
【硬刚JVM】JVM 专题二十一:垃圾回收(五)垃圾回收器 (二)
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。3. 回收器3.1 Serial回收器:串行回收3.1.1 概述1.Serial收集器是最基本、历史最悠久的垃圾收集器了。JDK1.3之前回收新生代唯一的选择。2.Serial收集器作为Hotspot中Client模式下的默认新生代垃圾收集器。3.Serial收集器采用复制算法、串行回收和"stop-the-World"机制的方式执行内存回收。4.除了年轻代之外, Serial收集器还原创 2021-09-25 02:40:24 · 329 阅读 · 0 评论 -
【硬刚JVM】JVM 专题二十二:垃圾回收(六)垃圾回收器 (三)
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。4. GC日志分析4.1 日志分析1.通过阅读GC日志,我们可以了解Java虚拟机内存分配与回收策略。2.内存分配与垃圾回收的参数列表-XX:+PrintGC:输出GC日志。类似-verbose: gc3.-XX: +PrintGCDetails输出GC的详细日志 4.-XX:+ PrintGCTimeStamps输出GC的时间戳(以基准时间的形式)5.-XX:+...原创 2021-09-26 16:46:57 · 511 阅读 · 0 评论 -
【硬刚JVM】JVM 专题二十三:面试题(一)
本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的JVM部分补充。194.说一下 jvm 的主要组成部分?及其作用?类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)本地库接口(Native Interface)组件的作用:首先通过类加载器(ClassLoader)会把Java代码转换成字节码,运行时数据区(RuntimeDataArea)再把字节码加载到内存中,...原创 2021-09-26 16:58:16 · 820 阅读 · 0 评论 -
jvm系列(一)java类的加载机制
原文: GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到...原创 2019-02-20 13:24:55 · 490 阅读 · 0 评论 -
JVM面试汇总(二)
二、基本算法gc实现虽然很多,像串行、并行、并发、分代,但是最基本的算法却只有几种:引用计数、标记-清除算法、拷贝和整理,其中拷贝和整理算法还是以标记清除为基础的。1、引用计数每个对象记录被引用的次数,每多一个引用计数器加一,少一个引用计数器减一。如果引用次数为0了,就表示可以回收了。但是这里有一个问题,对象循环引用的时候,没有办法判断该不该回收。例如A引用B,B引用A,但是A、B都没有被别的对象引用,此时A、B计数器都不为0,但是也应该回收的。2、标记-清除算法Mark-Clean通过GC Ro原创 2019-02-26 22:54:34 · 419 阅读 · 0 评论 -
jvm系列(二)JVM内存结构
GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?Out...原创 2019-02-20 13:26:16 · 337 阅读 · 0 评论 -
jvm系列(三)GC算法 垃圾收集器
GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 概述垃圾收集 Garbage Collection 通常被称为“GC”,它诞...原创 2019-02-20 13:26:04 · 330 阅读 · 0 评论 -
jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
原文: GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 简介运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我...原创 2019-02-20 13:25:51 · 540 阅读 · 0 评论 -
jvm系列(五)Java GC 分析
原文: GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数据成神之路~预计更新500+篇文章,已经更新50+篇~ Java GC就是JVM记录仪,书画了JVM各个分区的表演。什么是 J...原创 2019-02-20 13:25:42 · 399 阅读 · 0 评论 -
HotSpot垃圾收集器
GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数据成神之路~预计更新500+篇文章,已经更新50+篇~ HotSpot垃圾收集器HotSpot 虚拟机提供了多种垃圾收集器,每种收集...原创 2019-02-20 13:25:19 · 361 阅读 · 0 评论 -
JVM 性能调优
GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数据成神之路~预计更新500+篇文章,已经更新50+篇~ JVM 性能调优在高性能硬件上部署程序,目前主要有两种方式:通过 64 ...原创 2019-02-20 13:26:46 · 479 阅读 · 0 评论 -
类文件结构
GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 类文件结构JVM 的“无关性”谈论 JVM 的无关性,主要有以下两个:平台无关...原创 2019-02-20 13:27:02 · 471 阅读 · 0 评论 -
JVM之类加载器
GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 类加载器类与类加载器判断类是否“相等”任意一个类,都由加载它的类加载器和这个类本...原创 2019-02-20 13:27:13 · 330 阅读 · 0 评论 -
JVM面试题库
公众号全网唯一一个从0开始帮助Java开发者转做大数据领域的公众号~大数据技术与架构或者搜索import_bigdata关注~海量【java和大数据的面试题+视频资料】整理在公众号,关注后可以下载~JVM内存回收机制简述JVM内存回收机制涉及的知识点太多了,了解越多越迷糊,汗一个,这里仅简单做个笔记,主要参考《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)》...原创 2019-02-26 13:34:07 · 2033 阅读 · 1 评论 -
HotSpot虚拟机对象探秘
[GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData](GitHub%EF%BC%9Ahttps://github.com/wangzhiwubigdata/God-Of-BigData) 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数...原创 2019-02-20 13:25:30 · 417 阅读 · 0 评论 -
JVM内存结构
GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数据成神之路~预计更新500+篇文章,已经更新50+篇~ JVM 内存结构Java 虚拟机的内存空间分为 5 个部分:程序计数器...原创 2019-02-20 13:26:34 · 345 阅读 · 0 评论 -
内存分配与回收策略
GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~ 大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 内存分配与回收策略对象的内存分配,就是在堆上分配(也可能经过 JIT 编译后...原创 2019-02-20 13:25:08 · 396 阅读 · 0 评论