深入理解Java虚拟机1
一、内存模型1、运行时数据区 (1)程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,我们称这...
2024-01-10《深入理解Java虚拟机》笔记2
都知道Java对内存是自动垃圾回收的,什么样的内存是可以回收的?这个问题是值得思考的。对象已死的判定方法有两种:(1)引用计数器法给对象添加一个引用计数器,有一个地方用到此对象,计数器加一。引用失效,计数器减一。这个判断方法实现应该简单,但是Java不用。因为对象间的循环引用不...
2024-01-10深入理解java异常处理机制
1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训” 告诉我,这个东西可不是想象中的那么简单。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看...
2024-01-10【jvm】深入理解java虚拟机读书笔记
1.内存分配和回收策略:java技术体系中提倡自动内存管理核心解决两个问题:给对象分配内存 回收分配给对象内存, 对象优先在新生代(Eden)分配 2.垃圾回收器分为:Serial收集器,ParNew收集器,Parallel Scavenge收集器,Serial Old收集器, Parallel Old收集器,CMS...
2024-01-10深入理解java线程通信
前言开发中不免会遇到需要所有子线程执行完毕通知主线程处理某些逻辑的场景。或者是线程 A 在执行到某个条件通知线程 B 执行某个操作。可以通过以下几种方式实现:等待通知机制等待通知模式是 Java 中比较经典的线程通信方式。两个线程通过对同一对象调用等待 wait() 和通知 notify() 方法来...
2024-01-10java虚拟机深入学习之内存管理机制
前言前面说过了类的加载机制,里面讲到了类的初始化中时用到了一部分内存管理的知识,这里让我们来看下Java虚拟机是如何管理内存的。先让我们来看张图有些文章中对线程隔离区还称之为线程独占区,其实是一个意思了。下面让我们来详细介绍下这五部分;运行时数据区Java虚拟机在执行Java...
2024-01-10java虚拟机原理:类加载过程详解
目录一、Java 类加载过程1、字节码编译2、加载3、连接4、初始化总结一、Java 类加载过程1、字节码编译编写好 Java 源码 Student.java ,使用 javac 将上述 Java 源码编译成 Class 字节码文件 Student.class ,2、加载加载 : 通过 " 类加载子系统 " 将该字节码文件 , 加载到 Java 虚拟机内存中 的 方法区 , 然后开始执...
2024-01-10深入理解Java中的SPI机制
本文通过探析JDK提供的,在开源项目中比较常用的Java SPI机制,希望给大家在实际开发实践、学习开源项目提供参考。1 SPI是什么SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。整体机制图如下:Java SPI 实际上是“基于接口的编...
2024-01-10Java容器类的深入理解
Java容器类包含List、ArrayList、Vector及map、HashTable、HashMap ArrayList和HashMap是异步的,Vector和HashTable是同步的,所以Vector和HashTable是线程安全的,而ArrayList和HashMap并不是线程安全的。因为同步需要花费机器时间,所以Vector和HashTable的执行效率要低于ArrayList和HashMap。Collection├List 接口│├LinkedList ...
2024-01-10深入理解Java虚拟机二:垃圾收集与内存分配
垃圾收集:垃圾收集要完成三件事,包括哪些内存需要回收,什么时候回收及如何回收。1、需要回收的内存判定:没有引用指向原先分配给某个对象的内存时,则该内存是需要回收的垃圾 Java垃圾收集器在对内存进行回收之前,首先就是要确定这些对象哪些已经“死去”,对已经“死去”的...
2024-01-10《深入理解Java虚拟机》-- 对缓存的理解
此文转载自:https://blog.csdn.net/qq_39414348/article/details/113184169#commentBox不才,笔者第一次学习缓存,是在学习redis的时候,是在培训班学习了一些java的启蒙知识。但是在后来的深入学习之后,对缓存又有了新的认识。1.池...
2024-01-10深入Java虚拟机(四)连接模型
从程序猿的角度来看,理解Java体系结构最重要的方面之一就是连接模型。前面曾说过,Java的连接模型允许用户自行设计类装载器,通过自定义的类装载器,程序可以装载在编译时并不知道或许尚未存在的类或者接口,并动态连接它们。上一篇文章只是简单描述了类生命周期的各个阶段,但是没有深...
2024-01-10深入理解Java原生的序列化机制
概念一个对象如果想在硬盘上存储,一定就需要借助于一定的数据格式。这种把对象转换为硬盘存储的格式的过程就叫做对象的序列化,同样地,将这些文件再反向转换为程序中对象的操作就叫做反序列化一些复杂的解决方案可能是将对象转换为json字符串的方式,这种方式的优点是易读,但是效率...
2024-01-10深入理解Java虚拟机_动力节点Java学院整理
什么是Java虚拟机Java程序必须在虚拟机上运行。那么虚拟机到底是什么呢?先看网上搜索到的比较靠谱的解释:虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了...
2024-01-10深入理解Java中的装箱和拆箱
前言自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。若有不正之处,请谅解和批评指正,不胜感激。一.什么是装箱?什么是拆箱?在前面的...
2024-01-10深入理解java虚拟机-第二章:java内存区域与内存泄露异常
java将内存的管理(主要是回收工作),交由jvm管理,确实很省事,但是一点jvm因内存出现问题,排查起来将会很困难,为了能够成为独当一面的大牛呢,自然要了解vm是怎么去使用内存的。2.2运行时的数据区域 vm会将管理的内存划分为不同的区域,不同的区域间有各自的用途,以及创建和销毁时...
2024-01-10深入理解JVM虚拟机字节码指令集
在Java虚拟机的指令集中,大多数指令都包含其操作所对应的数据类型信息,如:i代表对int类型的数据操作,l代表long,s代表short,b代表byte,c代表char,f代表float,d代表double,a代表reference。解释器的执行模型Java虚拟机的解释器的执行模型:do { 自动计算PC寄存器的值加1; 根据PC寄存器指示的位...
2024-01-10深入理解Java垃圾回收机制以及内存泄漏
前言在segmentfault上看到一个问题:java有完善的GC机制,那么在java中是否会出现内存泄漏的问题,以及能否给出一个内存泄漏的案例。本问题视图给出此问题的完整答案。垃圾回收机制简介在程序运行过程中,每创建一个对象都会被分配一定的内存用以存储对象数据。如果只是不停的分配内存,那么...
2024-01-10【深入Java虚拟机】二 类加载与双亲委派
https://blog.csdn.net/zhangliangzi/article/details/51338291 -参考双亲委派过程:当一个类加载器收到类加载任务时,立即将任务委派给它的父类加载器去执行,直至委派给最顶层的启动类加载器为止。如果父类加载器无法加载委派给它的类时,将类加载任务退回给它的下一级加载器去执行;除了启动类加载器以外...
2024-01-10深入了解Java对象的克隆
今天要介绍一个概念,对象的克隆。本篇有一定难度,请先做好心理准备。看不懂的话可以多看两遍,还是不懂的话,可以在下方留言,我会看情况进行修改和补充。 克隆,自然就是将对象重新复制一份,那为什么要用克隆呢?什么时候需要使用呢?先来看一个小栗子: 简单起见,我们...
2024-01-10深入理解Java IO的flush
Java的IO是一个大知识点,如果把它的知识点拆开来说的话估计能说一个星期,关于IO的体系可以看看下面这张图,接下来我们从一段代码开始聊吧,先看看下面这段代码public class Test { public static void main(String[] args) throws Exception { File file = new File("text.txt"); if(!file.exists()) { file.createNewFile(); } Fil...
2024-01-10转:深入理解Java G1垃圾收集器
本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践。一,什么是垃圾回收首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么?简单的说垃圾回收就是回收内存中不再使用的对象。垃圾回收的基本步骤回收的...
2024-01-10深入理解ajax系列第一篇之XHR对象
前面的话 ajax是asynchronous javascript and XML的简写,中文翻译是异步的javascript和XML,这一技术能够向服务器请求额外的数据而无须卸载页面,会带来更好的用户体验。虽然名字中包含XML,但ajax通信与数据格式无关。下面将详细介绍ajax的内容 创建 ajax技术的核心是XMLHttpRequest对象(简称XHR),这是...
2024-01-10《Java虚拟机原理图解》3、JVM执行时数据区
[last updated :2014/11/7] JVM执行时数据区(JVM Runtime Area)事实上就是指JVM在执行期间,其对计算机内存空间的划分和分配。本文将通过下面几个话题来讨论JVM执行时数据区。Topic 1. JVM执行时数据区里有什么?Topic 2. 虚拟机栈 是什么?虚拟机栈里有什么?Topic 3.栈帧是什么?栈帧里有什么?Topic 4. 方...
2024-01-10Java等待唤醒机制原理实例解析
这篇文章主要介绍了Java等待唤醒机制原理实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下线程的状态首先了解一下什么是线程的状态,线程状态就是当线程被创建(new),并且启动(start)后,它不是一启动就进入了执行状态(run...
2024-01-10