JAVA中Object类方法详解

JAVA,Object,registerNatives()、getClass()、hashCode()、equals()、clone()、toString()、notify()、notifyAll()、wait(long)、wait(long,int)、wait()、finalize() ... »

探索ParNew和CMS垃圾回收器

前言 上篇文章我们一起分析了JVM的垃圾回收机制,了解了新生代的内存模型,老年代的空间分配担保原则,并简单的介绍了几种垃圾回收器。详细内容小伙伴们可以去看一下我的上篇文章:秒懂JVM的垃圾回收机制。 今天我们就来探索一下,ParNew和CMS垃圾回收器的实现过程。 ParNew垃圾回收器 现在,如果 ... »

解Bug之路-记一次JVM堆外内存泄露Bug的查找

解Bug之路-记一次JVM堆外内存泄露Bug的查找 前言 JVM的堆外内存泄露的定位一直是个比较棘手的问题。此次的Bug查找从堆内内存的泄露反推出堆外内存,同时对物理内存的使用做了定量的分析,从而实锤了Bug的源头。笔者将此Bug分析的过程写成博客,以飨读者。 由于物理内存定量分析部分用到了linu ... »

jvm堆内存和GC简介

最近经常遇到jvm内存问题,觉得还是有必要整理下jvm内存的相关逻辑,这里只描述jvm堆内存,对外内存暂不阐述。 jvm内存简图 jvm内存分为堆内存和非堆内存,堆内存分为年轻代、老年代,非堆内存里只有个永久代。 年轻代分为生成区(Eden)和幸存区(Survivor),幸存区由FromSpace和 ... »

JVM(五):JVM模型与GC

确定垃圾 引用计数(存在循环引用问题) 根可达算法 常见的垃圾回收算法 标记清除算法-位置不连续,产生碎片 拷贝算法- 没有碎片,浪费空间 标记压缩-没有碎片,效率偏低(多线程需要进行线程同步,单线程效率本来就低) JVM内存分代模型(用于分代垃圾回收算法) 部分垃圾回收器使用的模型 新生代+老年代 ... »

秒懂JVM的垃圾回收机制

前言 阅读过王子之前JVM文章的小伙伴们,应该已经对JVM的内存分布情况有了一个清晰的认识了,今天我们就接着来聊聊JVM的垃圾回收机制,让小伙伴们轻松理解JVM是怎么进行垃圾回收的。 复制算法、Eden区和Survivor区 首先我们就来探索一下对于JVM堆内存中的新生代区域,是怎么进行垃圾回收的。 ... »

轻松理解JVM的分代模型

前言 上篇文章我们一起对jvm的内存模型有了比较清晰的认识,小伙伴们可以参考JVM内存模型不再是秘密这篇文章做一个复习。 本篇文章我们将针对jvm堆内存的分代模型做一个详细的解析,和大家一起轻松理解jvm的分代模型。 相信看过其他文章的小伙伴们可能都知道,jvm的分代模型包括:年轻代、老年代、永久代 ... »

基础篇:详解锁原理,volatile+cas、synchronized的底层实现

(目录) 随着多进程多线程的出现,对共享资源(设备,数据等)的竞争往往会导致资源的使用表现为随机无序 例如:一个线程想在控制台输出"I am fine",刚写到"I am",就被另一线程抢占控制台输出"naughty",导致结果是"I am naughty";对于资源的被抢占使用,我们能怎么办呢?当 ... »

玩命学JVM(二)—类加载机制

前言 Java程序运行图: 上一篇玩命学JVM(一)—认识JVM和字节码文件我们简单认识了 JVM 和字节码文件。那JVM是如何使用字节码文件的呢?从上图清晰地可以看到,JVM 通过类加载器完成了这一过程。 以下是类加载机制的知识框架: 接下来我们对思维导图中重难点部分做补充。 1. 是什么? 类的 ... »

Spring AOP系列(五)—反射

前言 前面我们进行了代理模式、静态代理、动态代理的学习。而动态代理就是利用Java的反射技术(Java Reflection),在运行时创建一个实现某些给定接口的新类(也称“动态代理类”)及其实例(对象)。所以接下来我们有必要学习一下Java中的反射。 ##一、基础知识 1.1 反射是什么? 在讲反 ... »

探讨JVM运行机制和执行流程

JVM是什么 概述 JVM是Java Virtual Machine的缩写。它是一种基于计算设备的规范,是一台虚拟机,即虚构的计算机。 JVM屏蔽了具体操作系统平台的信息(显然,就像是我们在电脑上开了个虚拟机一样),当然,JVM执行字节码时实际上还是要解释成具体操作平台的机器指令的。 通过JVM,J ... »

玩命学JVM(一)—认识JVM和字节码文件

本篇文章的思维导图 一、JVM的简单介绍 ###1.1 JVM是什么? JVM (java virtual machine),java虚拟机,是一个虚构出来的计算机,但是有自己完善的硬件结构:处理器、堆栈、寄存器等。java虚拟机是用于执行字节码文件的。 ###1.2 JAVA为什么能跨平台? 首先 ... »

JVM内存模型不再是秘密

前言 上篇文章我们一起了解了jvm虚拟机类的加载机制,而且是以一种纯大白话进行的一场闲聊,相信小伙伴们应该印象深刻,感兴趣的小伙伴可以重温一下上一篇文章大白话谈JVM的类加载机制。 当jvm加载了类后,会把需要使用的对象放入到内存当中,那么jvm的内存模型是什么样的呢? 今天我们就来探索一下jvm的 ... »

基础篇:深入解析JAVA反射机制

(目录) 反射的概念 java的放射机制:在程序运行时,程序有能力获取一个类的所有方法和属性;并且对于任意一个对象,可以调用它的任意方法或者获取其属性 通俗解析:java文件需要编译成.class文件才能被jvm加载使用,对象的.class数据在jvm里就是Class<T>;我们如果能拿到这个Cla ... »

大白话谈JVM的类加载机制

前言 我们很多小伙伴平时都是做JAVA开发的,那么作为一名合格的工程师,你是否有仔细的思考过JVM的运行原理呢。 如果懂得了JVM的运行原理和内存模型,像是一些JVM调优、垃圾回收机制等等的问题我们才能有一个更清晰的概念。 为了走进JVM,深入了解底层,王子打算写一个JVM的专题,留下自己对JVM探 ... »

虚拟机系列 | 执行引擎和垃圾回收

本文源码:GitHub·点这里 || GitEE·点这里 一、执行引擎 应用程序经过编译,转换为字节码文件,字节码加载到内存空间并不能直接在操作系统上执行,执行引擎作为Java虚拟机核心的组成部分,作用就是将字节码指令解释/编译为对应系统平台上的本地机器指令。 解释器:虚拟机启动时会根据预定义对字节 ... »

虚拟机系列 | JVM运行时数据区

本文源码:GitHub·点这里 || GitEE·点这里 一、内存与线程 1、内存结构 内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。JVM的内存结构规定Java程序在执行时内存的申请、划分、使用、回收的管理 ... »