
JVM
文章平均质量分 86
Java 学习笔记,主要来源于B站学习,同时会记录一些平时和项目中遇到的问题提,同步更新到优快云博客,如果感兴趣的话,欢迎关注我的 优快云 笔记主要涵盖:Java 等,如果笔记对你有帮助的话,欢迎 一键支持,谢谢~
果将如此
这个作者很懒,什么都没留下…
展开
-
25_垃圾收集器
问题5:GC垃圾回收算法和垃圾收集器关系?分别是什么请你谈谈?天上飞的理念,要有落地的实现(垃圾收集器就是GC垃圾回收算法的实现)GC算法是内存回收的方法论,垃圾收集器就是算法的落地实现GC算法主要有以下几种:引用计数(几乎不用,无法解决循环引用的问题)复制拷贝(用于新生代)标记清除(用于老年代)标记整理(用于老年代)因为目前为止还没有完美的收集器出现,更没有万能的收集器,只是针对具体应用最合适的收集器,进行;四种主要的垃圾收集器:Serial:串行回收 -XX:+Use.原创 2021-01-29 16:38:38 · 333 阅读 · 0 评论 -
24_Java内存溢出OOM
JVM中常见的两个错误StackoverFlowError :栈溢出OutofMemoryError: java heap space:堆溢出除此之外,还有以下的错误java.lang.StackOverflowErrorjava.lang.OutOfMemoryError:java heap spacejava.lang.OutOfMemoryError:GC overhead limit exceeededjava.lang.OutOfMemoryError:Direct buffer原创 2021-01-29 16:33:24 · 272 阅读 · 0 评论 -
23_Java中的引用
在原来的时候,我们谈到一个类的实例化Person p = new Person()在等号的左边,就是一个对象的引用,存储在栈中而等号右边,就是实例化的对象,存储在堆中其实这样的一个引用关系,就被称为强引用整体架构强引用当内存不足的时候,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收,打死也不回收~!强引用是我们最常见的普通对象引用,只要还有一个强引用指向一个对象,就能表明对象还“活着”,垃圾收集器不会碰这种对象。在Java中最常见的就是强引用,把原创 2021-01-29 16:30:23 · 225 阅读 · 0 评论 -
22_JVM参数调优
题目2:你说你做过JVM调优和参数配置,请问如何盘点查看 JVM系统默认值?使用 jps 和 jinfo 进行查看# 调整JVM初始化参数(-Xms 和 -Xmx最好调整一致,防止JVM频繁进行收集和回收)-Xms:初始堆空间-Xmx:堆最大值-Xss:栈空间JVM参数类型标配参数从JDK1.0 - Java12都在,很稳定-version-helpjava -showversionX参数(了解)-Xint:解释执行-Xcomp:第一次使用就编译成本地代码.原创 2021-01-29 16:28:55 · 380 阅读 · 0 评论 -
21_GC Roots分析
题目1:JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots什么是垃圾简单来说就是:内存中已经不再被使用的空间就是垃圾如何判断一个对象是否可以被回收引用计数法Java中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法就是通过引用计数来判断一个对象是否可以回收简单说,给对象中添加一个引用计数器,每当有一个地方引用它,计数器值加1,每当有一个引用失效,计数器值减1,任何时刻计数器值为零的对象就是不可能再被使用的,那么这个对象就是可回收对象。.原创 2021-01-29 16:22:47 · 255 阅读 · 0 评论 -
20_JVM体系结构
Java gc 主要回收的是 方法区 和 堆 中的内容类加载器常考考点:类加载器是什么双亲委派机制Java类加载的沙箱安全机制常见的垃圾回收算法引用计数复制算法复制算法在年轻代的时候,进行使用,复制时候有交换优点:没有内存碎片缺点:消耗内存标记清除先标记,后清除。用于老年代多一些优点:不会消耗那么多内存缺点:会产生内存碎片标记整理也叫标记清除整理,多用于老年代优点:不会消耗太多内存;不会有内存碎片缺点:比较耗时总结:没有完美的..原创 2021-01-29 16:20:36 · 184 阅读 · 0 评论 -
9_ GC 四大算法详解
GC垃圾收集机制对于GC垃圾收集机制,我们需要记住以下几点:次数上频繁收集Young区。次数上较少收集Old区。基本不动元空间。JVM在进行GC时,并非每次都对上面三个内存区域一起回收的,大部分时候回收的都是指新生代。因此GC按照回收的区域又分了两种类型:普通GC(minor GC): 只针对新生代区域的GC,指发生在新生代的垃圾收集动作,因为大多数Java对象存活率都不高,所以Minor GC非常频繁,一般回收速度也比较快。全局GC(major GC or Full GC): 指原创 2021-01-29 14:21:03 · 544 阅读 · 0 评论 -
8_Java堆
一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的。堆体系结构JDK 1.7: 永久代使用的是堆空间内存类加载器读取了类文件之后,需要把类、方法、常量变量放到堆内存中,保持所以引用类型的真实信息,方便执行器执行。其中,堆内存分为3个部分:Young Generation Space,新生区、新生代Tenure Generation Space,老年区、老年代Permanent Space,永久区、元空间JDK 1.8: 将永久区变成了元空间,使用的是物理内存对象在.原创 2021-01-29 14:15:48 · 525 阅读 · 0 评论 -
7_方法区
所在位置:从线程共享与否的角度来看:栈、堆、方法区的交互关系:Person:存放在元空间,也可以说方法区person:存放在Java栈的局部变量表中new Person():存放在Java堆中是什么《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。”但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆)【物理上】,目的就是要和堆分开。所以,方法区看作是一块独立于 Java原创 2021-01-29 14:12:48 · 208 阅读 · 0 评论 -
6_Java 虚拟机栈
????写在前面:JVM 内存只有 Java 栈 和 Java 堆吗 ?Java 栈与线程的关系是什么 ?Java 栈会发生溢出吗?可以怎样调整其大小 ?Java 栈里面存放的什么 ?栈帧中的局部变量一定是线程安全的吗 ?Java 栈中是否存在垃圾回收 ?6_Java 虚拟机栈虚拟机栈概述有不少 Java 开发人员一提到Java内存结构,就会非常粗粒度地将JVM中的内存区理解为仅有 Java 堆(heap)和 Java 栈(stack)?为什么?首先栈是运行时的单位,而堆是存储的单位。\color原创 2020-11-01 18:15:26 · 208 阅读 · 0 评论 -
5_本地方法栈
????写在前面:在 Java 运行时数据区域有 Java 虚拟机栈,也有本地方法栈,怎样去区分它们呢 ?它们在使用上是否一样 ?5_本地方法栈Java 栈是属于线程私有,它的声明周期与线程同步,Java 方法被在调用时,入Java 栈成为一个一个栈帧,即 Java 虚拟机栈用于管理 Java 方法的调用,类似,本地方法栈用于管理本地方法的调用。本地方法栈,也是线程私有的。允许被实现成固定或者是可动态扩展的内存大小。(在内存溢出方面是相同的)如果线程请求分配的栈容量超过本地方法栈允许的最大容量原创 2020-11-01 16:00:06 · 166 阅读 · 0 评论 -
4_ 本地方法接口
????写在前面:前面说到 JVM 线程会与操作系统的线程进行映射 ?但是一个是 Java ,一个是C /C++它们如何进行交互呢 ?4_ 本地方法接口什么是本地方法简单地讲,一个 Native Method 是一个 Java 调用非 Java 代码的接囗,其作用就是融合不同的编程语言为 Java 所用,它的初衷是用来融合 C/C++ 程序的,Java 诞生的时候是 C/C++ 流行时期,要想立足,就得调用 C/C++ 程序。同时 Java 还在内存中专门开辟了一块区域处理标记为 native 的原创 2020-11-01 15:31:14 · 175 阅读 · 0 评论 -
3_程序计数器
????写在前面:类加载系统加载字节码但方法区后,由执行引擎执行相应代码,但是执行引擎又该如何知道具体执行哪条代码呢 ?为什么程序计数器是线程私有呢?程序计数器有什么用呢 ?3_程序计数器介绍JVM 中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为 PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容原创 2020-11-01 14:56:52 · 358 阅读 · 0 评论 -
2_运行时数据区概述及线程
????写在前面:类加载系统对字节码文件经过:类的加载-> 验证 -> 准备 -> 解析 -> 初始化这几个阶段后,就完成了它的任务,接下来就需要使用执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区。运行时数据区概述及线程也就是大厨做饭,我们把大厨后面的东西(切好的菜,刀,调料),比作是运行时数据区。而厨师可以类比于执行引擎,将通过准备的东西进行制作成精美的菜品 。JVM内存布局内存是非常重要的系统资源,是硬盘和 CPU 的中间仓库及桥梁,承载着操作系原创 2020-11-01 14:08:34 · 180 阅读 · 0 评论 -
1_JVM体系结构与类加载系统
????来源Bilibili尚硅谷周阳老师JVM教程:JVM_周阳老师教程1_JVM体系结构与类加载系统JVM体系结构JVM 的位置,JVM 是运行在操作系统之上的,它与硬件没有直接交互。补充:HotSpot VM 是目前市面上高性能虚拟机的代表作之一。它采用解释器与即时编译器并存的架构。JVM 的整个体系结构图,类加载子系统类装载器 ClassLoader完整细节图类装载器 ClassLoader 的作用 : 负责加载 class 文件的,将 class 文件字节码内原创 2020-11-01 10:12:13 · 380 阅读 · 3 评论