深入解析java虚拟机
java虚拟机是什么“java虚拟机”可能指以下三种东西:1)、抽象规范;2)、一个具体的实现;3)、一个运行中的虚拟机实例;java虚拟机生命周期启动当启动一个java程序时,一个虚拟机实例诞生。虚拟机实例通过调用某个初始类的public static void main(String[] args)方法来运行一个java程序。任何拥有这样一...
2024-01-10深入理解Java虚拟机1
一、内存模型1、运行时数据区 (1)程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,我们称这...
2024-01-10深入理解java的泛型
但是Java为了保证向下兼容性,它的泛型全部都是在编译期间实现的。编译器执行类型检查和类型推断,然后生成普通的非泛型的字节码。这种就叫做类型擦除。编译器在编译的过程中执行类型检查来保证类型安全,但是在随后的字节码生成之前将其擦除。这样就会带来让人困惑的结果。本文将会详细...
2024-01-10理解Java虚拟机体系结构
众所周知,Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么。正是得益于Java虚拟机,它号称的“一次编译,到处运行”才能有所保障。1.1 Java程序执行流程 Java程序的执行依赖于编译环境...
2024-01-10深入理解Java虚拟机之经典垃圾收集器
目录1. 综述1. 总述:2. 图示总述3. 应用中应如何做出选择?2. Serial收集器1. 简介2. 图解工作过程3.使用的垃圾收集算法4. 优点5. 缺点6. 主要应用场景3. ParNew收集器1. 简介2. 图解工作过程3. 使用的垃圾收集算法4. 补充概念5. 主要应用场景4. Parallel Scavenge收集器1. 简介2. 补充概念3. 图解工作过程4. 使用的垃...
2024-01-10java虚拟机中的栈结构如何理解
对于java中的内存来说,有一些特定的名词,我们是没有进行了系统的学习,这使得对于概念的理解上比如模糊,栈结构就是一个比较典型的词。相信在线程的存储、java虚拟机中,我们都有频繁的接触到。下面我们就对java栈进行说明,在对详细的结构展开分析,大家都来看看吧。1、java栈说明Java栈是JVM...
2024-01-10深入理解java异常处理机制及应用
1. 引子try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看...
2024-01-10深入理解 Java 虚拟机之学习笔记(2)
本节介绍 Java堆的OutOfMemoryError测试Eclipse Memory Analyzer分析内存溢出 虚拟机栈和本地方法栈StackOverflowError测试方法区和运行时常量池溢出本机直接内存溢出一、Java堆的OutOfMemoryError测试 (1)首先设置debug configuration。如下图所示: (2)接下来进行编码操作,如下面的代码所示,不断添加...
2024-01-10深入理解Java中的IO
深入理解Java中的IO引言: 对程序语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的任务 < Thinking in Java > 本文的目录视图如下: Java IO概要 a.Java IO中常用的类 b.Java流类的类结构图1.流的概念和作用2.Java IO所采用的模型 :3.IO流的分类4.Java IO流对象 ...
2024-01-10深入理解Java原生的序列化机制
概念一个对象如果想在硬盘上存储,一定就需要借助于一定的数据格式。这种把对象转换为硬盘存储的格式的过程就叫做对象的序列化,同样地,将这些文件再反向转换为程序中对象的操作就叫做反序列化一些复杂的解决方案可能是将对象转换为json字符串的方式,这种方式的优点是易读,但是效率...
2024-01-10Java 内存分配深入理解
Java 内存分配深入理解 本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。 进入正题前首先要知道的是Java程序运行在JVM(Java Virtual Machine,Java虚拟机)上...
2024-01-10深入理解java虚拟机(三)对象回收判断算法以及死亡过程
在堆里面存放着Java几乎所有的对象实例,垃圾收集器要进行垃圾回收,要做的第一步便是找出那些对象是需要回收的。常用的方法有两种。1、引用计数算法。为每一个对象添加一个引用计数器,每当有人持有对其的一个引用的时候,该计数器加1。这种算法(Reference Counting)实现简单,判断效率高,...
2024-01-10深入理解java虚拟机【Java Class类文件结构】
Java语言从诞生之时就宣称一次编写,到处运行的跨平台特性,其实现原理是源码文件并没有直接编译成机器指令,而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件,*.class),字节码文件是一种平台无关的中间编译结果,字节码文件由java虚拟机读取,解析和执行,java虚拟机屏蔽了不同操作...
2024-01-10深入理解java中的null“类型”
本文研究的主要是java中的null“类型”的相关实例,具体介绍如下。先给出一道简单的null相关的题目,引发我们对null的探讨,后面会根据官方语言手册对null“类型”进行解读。题目:下面程序能正确运行吗?解析:输出应该为 :haha因为null 是可以强转为任何类类型的,所以前面((NULL)null)是合...
2024-01-10java 深入理解内存映射文件原理
内存映射文件原理首先说说这篇文章要解决什么问题? 1.虚拟内存与内存映射文件的区别与联系. 2.内存映射文件的原理. 3.内存映射文件的效率. 4.传统IO和内存映射效率对比.虚拟内存与内存映射文件的区别与联系 二者的联系虚拟内存和内存映射文件都是将一部分内容加载到,另一部分放在磁盘上...
2024-01-10深入理解JVM虚拟机11:Java内存异常原理与实践
本文转自互联网,侵删本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看https://github.com/h2pl/Java-Tutorial喜欢的话麻烦点下Star哈文章将同步到我的个人博客:www.how2playlife.com本文是微信公众号【Java技术江湖】的《深入理解JVM虚拟机》其中一篇,本文部分内...
2024-01-10Java中的装箱和拆箱深入理解
自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。一.什么是装箱?什么是拆箱?在前面的文章中提到,Java为每种基本数据类型都提供了对应的包...
2024-01-10深入理解Java中的字符串类型
1.Java内置对字符串的支持; 所谓的内置支持,即不用像C语言通过char指针实现字符串类型,并且Java的字符串编码是符合Unicode编码标准,这也意味着不用像C++那样通过使用string和wstring类实现与C语言兼容和Unicode标准。Java内部通过String类实现对字符串类型的支持。这意味着:我们可以直接对字符串常...
2024-01-10深入了解Java GC的工作原理
JVM学习笔记之JVM内存管理和JVM垃圾回收的概念,JVM内存结构由堆、栈、本地方法栈、方法区等部分组成,另外JVM分别对新生代下载地址 和旧生代采用不同的垃圾回收机制。首先来看一下JVM内存结构,它是由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示。JVM学习笔记 JVM内存管理和JVM垃...
2024-01-10深入理解Java定时调度(Timer)机制
简介在实现定时调度功能的时候,我们往往会借助于第三方类库来完成,比如: quartz 、 Spring Schedule 等等。JDK从1.3版本开始,就提供了基于 Timer 的定时调度功能。在 Timer 中,任务的执行是串行的。这种特性在保证了线程安全的情况下,往往带来了一些严重的副作用,比如任务间相互影响、任务执行...
2024-01-10理解JavaNIO
基础概念缓冲区操作 缓冲区及操作是所有I/O的基础,进程执行I/O操作,归结起来就是向操作系统发出请求,让它要么把缓冲区里的数据排干(写),要么把缓冲区填满(读)。如下图 内核空间、用户空间 上图简单描述了数据从磁盘到用户进程的内存区域移动的过程,其间涉及到了内核空间与用户...
2024-01-10含源码解析,深入Java线程池原理
1、池化技术简介在系统开发过程中,我们经常会用到池化技术来减少系统消耗,提升系统性能。在编程领域,比较典型的池化技术有:线程池、连接池、内存池、对象池等。对象池通过复用对象来减少创建对象、垃圾回收的开销;连接池(数据库连接池、Redis连接池和HTTP连接池等)通过复用TCP连接...
2024-01-10Java职责链模式的深入了解
目录一、职责链模式的定义与特点二、职责链模式的结构三、职责链模式案例总结一、职责链模式的定义与特点定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到...
2024-01-10深入理解Java类加载机制,再也不用死记硬背了
深入理解Java类加载机制,再也不用死记硬背了 谈谈“会”的三个层次在《说透分布式事务》中,我举例里说明了会与会的差别。对一门语言的学习,这里谈谈我理解的“会”的三个层次:第一层:了解这门语言的语法、写法,我把它叫做 hello world 级别;第二层:了解这门语言的优劣势...
2024-01-10类的加载过程(深入理解jvm)
1.1.通过类的全限定名找到二进制字节流1.2.将字节流中的静态存储结构转化为方法区中的动态存储结构1.3.在内存中生成一个java.lang.Class对象作为方法区这个类各种数据的访问入口2.验证:校验字节码文件是否符合规则,是否会破会虚拟机的安全性2.1.文件格式验证(是否符合class格式要求,可以被虚拟...
2024-01-10