• 《深入理解 java 虚拟机》学习 -- 内存分配

    时间:2024-01-14 14:40:10

    《深入理解 java 虚拟机》学习 -- 内存分配1. Minor GC 和 Full GC 区别概念:新生代 GC(Minor GC):指发生在新生代的垃圾收集动作,因为 Java 对象大多都具备朝生夕灭的特性,所以 Minor GC 非常频繁,一般回收速度也比较快。老年代 GC (Major G...

  • 《深入理解Java虚拟机》之(二、垃圾收集器与内存分配策略)

    时间:2024-01-14 14:31:52

    程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟着回收了,而java堆和方法区则不一样,这部分内存的分配和回收都是动态的,垃圾收集器所关注的是这部分内存。一、判断对象是否存活的方...

  • 读书笔记,《深入理解java虚拟机》,第三章 垃圾收集器与内存分配策略

    时间:2024-01-14 14:28:28

    要实现虚拟机,其实人们主要考虑完成三件事情:第一,哪些内存需要回收;第二,什么时候回收;第三,如何回收。第二节,对象已死吗    垃圾收集其实主要是针对java堆里面的数据来说的,传统的垃圾收集方法主要是基于引用计数算法,比如windows里面的com或者是actionscript3里面的flash...

  • 《深入理解Java虚拟机》调优案例分析与实战

    时间:2024-01-06 10:56:20

    上节学习回顾在上一节当中,主要学习了Sun JDK的一些命令行和可视化性能监控工具的具体使用,但性能分析的重点还是在解决问题的思路上面,没有好的思路,再好的工具也无补于事。本节学习重点在书本上本节的主要内容是讲作者在工作过程中对调优的一些经验实战。对于我们读者来说,重点是学习作者分析解决问题的具体思...

  • 【转载】深入理解Java虚拟机笔记---运行时栈帧结构

    时间:2024-01-02 22:27:16

    栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。第一个方法从调用开始到执行完成,就对应着一个栈帧在虚拟机栈中从入...

  • 《深入理解Java虚拟机》- Java虚拟机是如何加载Java类的?

    时间:2024-01-01 22:03:49

    Java虚拟机是如何加载Java类的?  这个问题也就是面试常问到的Java类加载机制。在年初面试百战之后,菜鸟喜鹊也是能把这流程倒背如流啊!但是,也只是字面上的背诵,根本就是像上学时背书考试一样。tonight ! 我们把它映射到实战里,看看如何用代码说明这个流程。ready! go!  ----...

  • 《深入理解Java虚拟机》笔记01 -- 运行时数据区

    时间:2024-01-01 17:30:15

    运行时数据区示意图1. 程序计数器占用一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。主要用来记录线程执行到哪条语句了,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完成。如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;...

  • 深入理解java虚拟机【Java Class类文件结构】

    时间:2024-01-01 16:01:03

    Java语言从诞生之时就宣称一次编写,到处运行的跨平台特性,其实现原理是源码文件并没有直接编译成机器指令,而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件,*.class),字节码文件是一种平台无关的中间编译结果,字节码文件由java虚拟机读取,解析和执行,java虚拟机屏蔽了不...

  • 《深入理解Java虚拟机》-----第3章 垃圾收集器与内存分配策略

    时间:2024-01-01 13:37:28

    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。3.1 概述说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物。事实上,GC的历史比Java久远,1960年诞生于MIT的Lisp是第...

  • 《深入理解 Java 虚拟机》读书笔记:垃圾收集器与内存分配策略

    时间:2024-01-01 13:27:36

    正文垃圾收集器关注的是 Java 堆和方法区,因为这部分内存的分配和回收是动态的。只有在程序处于运行期间时才能知道会创建哪些对象,也才能知道需要多少内存。虚拟机栈和本地方法栈则不需要过多考虑回收的问题,因为栈中每一个栈帧分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收具...

  • 深入理解Java虚拟机之JVM内存布局篇

    时间:2024-01-01 11:40:21

    内存布局****​JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的稳定高效运行。不同的JVM对于内存的划分方式和管理机制存在部分差异。结合JVM虚拟机规范,一起来探讨jVM的内存布局。如下图所示:Heap 堆区​Heap堆区是Java发生OOM(Out Of Mem...

  • 深入理解Java虚拟机 - 虚拟机内存划分

    时间:2024-01-01 07:58:37

    在内存管理方面,Java相对于C和C++的区别在于Java具有内存动态分配以及垃圾收集技术,但平时我们很少去关注JVM的内存结构以及GC,在出现内存泄露或溢出方面的问题,排查工作将变得异常艰难。        1. 运行时数据区域                Java虚拟机在执行Java程序时会将...

  • 深入理解Java虚拟机笔记——垃圾收集器与内存分配策略

    时间:2023-12-31 20:55:29

    目录判断对象是否死亡引用计数器算法可达性分析算法各种引用回收方法区垃圾收集算法标记-清除算法复制算法标记-整理算法分代收集算法HotSpot算法实现枚举根节点GC停顿(Stop The World)安全点垃圾收集器Serial 收集器ParNew 收集器Parallel Scanvenge 收集器C...

  • 《深入理解java虚拟机》读书笔记1--java内存区域

    时间:2023-12-31 20:52:28

    Java内存管理本文主要介绍Java虚拟机运行时的内存区域是如何划分的、Java对象的创建过程、Java对象的内存布局、Java对象的访问定位一:运行时区域划分主要可以分为以下 几个:程序计数器;栈(虚拟机栈和本地方法栈);堆;方法区;1.程序计数器记录正在执行的虚拟机字节码指令的地址.唯一一个没有...

  • 深入理解Java虚拟机一:运行时数据区域

    时间:2023-12-31 20:51:33

    根据《Java虚拟机规范(第2版)》的规定,Java虚拟机管理的内存包括下图几个运行时数据区域:1、程序计数器        程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,...

  • 深入理解Java虚拟机—内存管理机制

    时间:2023-12-31 20:46:06

    前面说过了类的加载机制,里面讲到了类的初始化中时用到了一部分内存管理的知识,这里让我们来看下Java虚拟机是如何管理内存的。先让我们来看张图有些文章中对线程隔离区还称之为线程独占区,其实是一个意思了。下面让我们来详细介绍下这五部分;运行时数据区Java虚拟机在执行Java程序的过程中会把它所管理的内...

  • 《深入理解Java虚拟机》学习笔记之内存分配

    时间:2023-12-31 20:41:10

    JVM在执行Java程序的过程中会把它所管理的内存划分若干个不同的数据区域,如下图:大致可以分为两类:线程私有区域和线程共享区域。线程私有区域程序计数器(Program Counter Register): 是一块很小的内存,可以看做是当前线程所执行的字节码行号指示器,虚拟机根据计数器值获取吓一条要...

  • 深入理解java虚拟机---java虚拟机内存管理(七)

    时间:2023-12-31 20:43:19

    本地方法栈、java堆、方法区本地方法栈在HotSpot版本内与java虚拟机栈是合二为一的.不单独区分本地方法栈.但是java虚拟机中是有这样一块区域的.作用:1.本地方法栈为虚拟机栈执行java方法服务2.本地方法栈为虚拟机栈执行navtive方法服务java堆java堆是线程共享区的堆内存.供...

  • JVM内存结构---《深入理解Java虚拟机》学习总结

    时间:2023-12-31 18:35:05

    Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域的用途各不相同,同时也依据着各自的执行规则,独立的创建和销毁数据。虚拟机内存的划分,如图所示:线程之间互相独立的区域有:虚拟机栈 、本地方法栈、程序计数器线程可以共享数据的区域:方法区 、堆每个区域的作用分...

  • 深入理解Java虚拟机读书笔记2----垃圾收集器与内存分配策略

    时间:2023-12-31 14:24:14

    二 垃圾收集器与内存分配策略1 JVM中哪些内存需要回收?    JVM垃圾回收主要关注的是Java堆和方法区这两个区域;而程序计数器、虚拟机栈、本地方法栈这3个区域随线程而生,随线程而灭,随着方法结束或者线程结束内存自然跟随着回收了,因此不需要过多考虑内存分配和回收的问题。2 判断对象是否存活的算...