自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java垃圾回收机制

Java内存结构分为:程序计数器、虚拟机栈、本地方法栈、堆、方法区,这个5个区域。程序计数器、虚拟机栈和本地方法栈随着线程而生,随着线程而灭。所以Java垃圾回收主要针对的是堆和方法区这两个内存,在jdk8版本后方法区(永久代)又被取消,所以Java垃圾回收主要针对堆内存。 程序在运行时,创建的所有的对象都在堆分配内存,所以Java回收的主要的就是无用的死掉的Java对象。那什么是无用的死掉的Java对象呢。Java是通过可达性分析算法判定对象是否存活,下面来介绍一下可达性分析算法: 把一些列对象作为根对象

2020-12-09 23:39:06 1360

原创 排序算法——java实现

1.插入排序 算法分析:首先插入排序利用了这样的一个事实:相邻两个数都是顺序的,没有逆序状态,那么这个整体就处于排过序的状态。如下表:在第p趟,我们将位置p上的元素向左移动,直到它和它左边元素是顺序的为止。 原始数组 34 8 64 51 32 21 移动的位置 p=1趟之后 8 34 64 51 32 21 1 p=2趟之后 8 34 64 51 32 21 0 p=3趟之后 8 34 51 64 32 21 1 p=4趟之后 8 32 34 64 51 21 3 p=5趟

2020-08-28 16:31:17 100

原创 源码详解java自动装箱拆箱

装箱和拆箱是针对基本数据类型和引用数据类型,在java中,8种基本数据类型每一种都提供了一个包装类,例如int类型的包装类是Integer。包装类也包含了不少的静态实用的方法。 我们来看一下Integer的部分源码 public final class Integer extends Number implements Comparable<Integer> { //构造器 public Integer(int value) { this.value = value;

2020-08-05 21:45:30 202

原创 虚拟机jvm类加载机制

      了解了Class文件结构和Class文件中存储的各类信息后,这些信息都是静态的存储在class文件中,class文件需要被加载到虚拟机中才能被运行和使用。那么虚拟机是如何加载的?Class文件中静态信息被加载后发生了什么变化,下文来探讨一下 虚拟机jvm类加载机制1、什么是类加载机制?2、什么时候开始类加载?3、类加载的过程?3.1 加载3.2 验证3.2.1 为什么要验证3.2.2.验证什么3.3 准备3.4 解析3.5 初始化 1

2020-06-30 20:14:28 206

原创 class文件结构详细解析

之前一直好奇java文件经过编译后生成的class文件,到底存储了什么信息?是如何被jvm识别并执行的?我们可不可以通过外部力量修改class文件内容,以致可以修改程序的运行?于是我带着种种疑问,开始研究class文件。参考《深入理解Java虚拟机》(周志鹏著) 在深入分析class文件之前,我们先来探讨class文件存在原因: 无关性的基石:Java刚开始诞生时的宣传口号“一次编写,到处运行”,开发者早就料想到,各种不用的硬件体系结构、各种不同的操作系统将来肯定会长期并存发展,实现跨平台的基础就是实现在操

2020-06-24 16:16:56 2181 5

原创 虚拟机jvm:java对象的创建过程

  java是一门面向对象的编程语言,java程序运行时无时无刻都有对象被创建。在语言层面上,创建对象仅仅是一个new关键字而已,而在虚拟机中对象的创建过程又是怎样呢? 注意:这里讨论的对象仅限于普通的java对象,不包括数组和Class对象 创建对象分以下几步: 1.验证对象类是否已经加载   当java虚拟机遇到一条字节码new指令时,首先检查这个指令的参数是否能在常量池中定位一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有先加载该类。 2.分配堆内存   类加.

2020-06-12 14:43:41 316

原创 虚拟机栈(VM Stack)

虚拟机栈(VM Stack) 1.是线程私有的区域 2.和pc Register一样,跟线程生命周期相同,每个线程分配一个独立的vm stack 3.没执行一个方法都同步创建一个该方法的stack frame(栈帧),方法执行完毕的过程,就对应着一个栈帧在VM Stack中从入栈道出栈的过程。 4.每一个栈帧stack frame包含局部变量表、操作数栈、方法返回值、动态链接 5.局部变量表包含:基本数据类型、引用、returnaddress类型。是一组变量值存储空间,用于存放方法参数和方法内部定义的局

2020-06-10 16:10:42 1037

空空如也

空空如也

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

TA关注的人

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