摘要:
HotSpot虚拟机对象探秘 一、对象的创建 Java是一门面向对象的编程语言,Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象通常(例外:复制、反序列化)仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建 阅读全文
摘要:
一、栈、堆、方法区的交互关系 二、方法区的理解 一、方法区在哪里? 《Java虚拟机规范》中明确说明:”尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾回收或者进行压缩。“但对于 HotSpot JVM 而言,方法区还有一个别名叫做 Non-Heap(非堆),目的就是 阅读全文
摘要:
一、GC分类与性能指标 一、垃圾回收器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的产商、不同版本的JVM来实现。由于JDK的版本处于高速迭代的过程中,因此Java发展至今已经衍生出了众多的GC版本。从不同角度分析垃圾收集器,可以将GC分为不同的类型。 二、垃圾回收器分类 按线程数分,可以 阅读全文
摘要:
一、PC Register介绍 下面是JVM 中的程序计数器: 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码 阅读全文
摘要:
咋废话少说,直接进入重点 😃😃😃 堆 一、堆(Heap)的核心概述 一、堆的核心概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了,是JVM管理的最大一块内存空间。堆内存的大小是可以调节的。 《Java虚拟机规 阅读全文
摘要:
一、引用拷贝 引用拷贝是不会创建新对象的,而是创建这个对象的另一个引用,最终两个引用指向的是同一个对象 如图: 我们通过一个实际的例子来看看: // Student 类 public class Student { String name; int age; public Student(Strin 阅读全文
摘要:
我们都知道反射是框架设计的灵魂,是必须要掌握的内容,华强都懂了,你还不懂吗,今天我就来带你揭开反射的真面目,就问你看不看吧。 为什么要使用反射 我们先想一下为什么要有反射,看下面的例子: 假如我们有一个接口 X 及其方法 test,和两个对应的实现类 A、B: public class Test { 阅读全文
摘要:
吊打面试官之 Hashtable 详解 如何保证 HashMap 线程安全 我们知道 HashMap 是线程不安全的,我们一般使用这三种方式来代替原生的线程不安全的 HashMap: 1)使用 java.util.Collections 类的 synchronizedMap 方法包装一下 HashM 阅读全文
摘要:
我们知道,动态代理使用了反射,Spring 中的 AOP 由于使用了动态代理,所以也相当于使用了反射机制。那么,代理是什么?动态代理又是什么?动态代理中是如何使用反射的?今天,我就带你剖析动态代理的真面目。 代理模式概述 简单来说,代理模式就是使用代理对象来代替对真实对象的访问,这样就可以在不修改原 阅读全文
摘要:
ArrayList 概述 ArrayList 实现了 List 接口,其实就是一个数组列表,不过作为 Java 的集合框架,它只能存储对象引用类型,也就是说当我们需要装载的数据是诸如 int、float 等基本数据类型的时候,必须把它们转换成对应的包装类。 ArrayList 的底层实现是一个 Ob 阅读全文