JVM
文章平均质量分 92
本模块主要是基于周志明老师的《深入理解java虚拟机》的理解和个人总结验证的,在这里感谢周志明老师,如有错误还希望各位多多指正,另外此文中的JVM虚拟机没有特殊说明指的是HotSpot虚拟机。
熟透的蜗牛
生活本就沉闷,但只要跑起来就会有风!
展开
-
JVM垃圾回收——对象进入老年代
大对象是指需要大量连续内存空间的Java对象,最典型的就是很长的字符串,或者很大的数组对象。在实际开发中我们要尽量避免大对象,因为在分配内存空间时,明明有很大的空间,但是连续的空间不足以创建大对象时,JVM不得不提前进行垃圾回收,以获取足够的空间来创建大对象;第二个原因,创建大对象在复制对象的时候需要高额的内存复制开销。原创 2023-06-04 16:31:37 · 2048 阅读 · 0 评论 -
JVM垃圾回收——ZGC垃圾收集器
ZGC(Z Garbage Collector)是一款在jdk11中加入的具有实验性质的低延迟的垃圾收集器,在jdk15中去掉实验的标识,成为具有商用的垃圾收集器。垃圾收集停顿时间控制在10毫秒以内(在jdk16之后停顿时间已经控制到1毫秒以内)的一款低停顿的垃圾收集器。如果非要给ZGC下一个定义的话,ZGC收集器是一款基于Region内存布局的,不设分代(不分老年代、新生代)的,使用了等技术来实现的基于标记-整理算法实现的,以低延迟为首要目标的一款的垃圾收集器。原创 2023-04-02 20:50:05 · 3527 阅读 · 0 评论 -
JVM垃圾回收——G1垃圾收集器
Garbage First(简称G1)收集器是垃圾收集器技术发展史上里程碑式的成果,它摒弃了传统垃圾收集器的严格的内存划分,而是采用局部回收的设计思路和基于Region的内存布局形式。G1是一款主要面向服务端应用的垃圾收集器,在jdk6 update14时,就有了实验版本。而到了jdk7 update4之后移除了“Experimental”标识。它的目的是为了适应现在不断扩大的内存和不断增加的处理器数量,进一步降低暂停时间(pause time),同时兼顾良好的吞吐量。原创 2023-02-27 00:01:32 · 7383 阅读 · 6 评论 -
JVM垃圾回收——CMS垃圾收集器
虽然HotSpot虚拟机已经在jdk14中移除了CMS垃圾收集的参数,但是考虑到还有很多开发是基于jdk8开发的,所以还是有必要了解一下CMS垃圾收集器的。CMS(Concurrent Mark Sweep)收集器是一种基于标记清除算法,追求最短停顿时间的真正意义上的第一款并发垃圾收集器。原创 2022-11-24 16:30:32 · 3646 阅读 · 1 评论 -
JVM垃圾回收——垃圾收集器(一)
本文主要介绍了几款传统的垃圾收集器,垃圾收集器的简要的工作过程,垃圾收集器的实用搭配以及垃圾收集器的参数配置,与使用场景。原创 2022-11-16 23:55:20 · 723 阅读 · 0 评论 -
JVM垃圾回收——三色标记法
在CMS、G1这种并发的垃圾收集器收集对象时,假如一个对象A被GC线程标记为不可达对象,但是用户线程又将A对象标记为可达对象,那么此时直接对A对象做清除时那将会发生很严重的错误,那么对象A是如何摆脱被清除的命运呢?今天就简单来聊聊这个问题。原创 2022-10-31 23:45:01 · 5249 阅读 · 3 评论 -
JVM垃圾回收——垃圾回收的一些细节实现
前面的博客已经介绍了一些常见的垃圾回收算法,那么现在来讨论一下垃圾回收的细节例如这些不再引用的对象是如何被标记上的,以及跨代引用是如何解决的,在CMS、G1这种并发的情况下被标记过的对象又是如何逃避掉被清理掉的命运的。原创 2022-10-24 08:30:00 · 779 阅读 · 0 评论 -
JVM垃圾回收——常见的垃圾回收算法
在前面的博客中我们了结了内存分配和内存溢出,现在我们一起探讨一下垃圾回收,垃圾回收需要考虑一些问题比如,那些对象是我们需要回收的?在什么时候回收?怎么样回收?回收时有哪些问题?了解垃圾回收可以解决实际生产中的什么问题等等。原创 2022-10-12 22:55:18 · 835 阅读 · 0 评论 -
JAVA的内存溢出和内存泄漏
在先前的博客中已经分析了JAVA对象内存分配,对象布局和对象访问定位,如果没有看过该博客的客官请移步。那么JAVA在运行过程中可能时时刻刻都在创建新的对象,那么在创建对象时如果没有分配到内存的时候会发生什么?首先可能会频繁的进行垃圾回收,如果回收的速度赶不上创建的速度,那么这时候当内存达到一定量时就会发生内存溢出。是指程序在申请内存时,没有足够的内存空间供其使用,出现OOM。原创 2022-09-12 00:30:15 · 3296 阅读 · 0 评论 -
Java中的对象
介绍了JAVA的封装、继承和多态,然后介绍了一下JAVA对象的内存分配方式、内存布局以及对象定位等信息原创 2022-09-06 23:50:13 · 1097 阅读 · 0 评论 -
JAVA的内存结构
JAVA的内存结构原创 2022-09-01 23:40:04 · 3399 阅读 · 0 评论 -
JvisualVm远程连接Docker构建的项目
目录一、Jvisual Vm的安装1、插件安装2、idea插件方式安装二、远程连接一、Jvisual Vm的安装1、插件安装Java VisualVM是一个工具,它提供了一个可视化界面,用于查看基于Java技术的应用程序(Java应用程序)在Java虚拟机(JVM)上运行时的详细信息。但是jdk8之后的版本,jdk工具包中不再带有visualvm工具,因此需要我们自行下载。下载地址下载后解压缩,文件结构目录如下修改/etc/visualvm.conf文原创 2022-04-29 01:15:29 · 2996 阅读 · 0 评论 -
花了好几个晚上整理的JVM知识点,吐血献出(一)
一、JVM内存模型内存划分JVM内存共分为堆、虚拟机栈,方法区,本地方法栈、程序计数器(寄存器)。堆:被所有线程共享的一块内存区域,在虚拟机启动的时候创建,用于存放对象实例。 虚拟机栈:是线程私有的。每个方法在执行的时候都会创建一个栈帧,栈帧存储了局部变量,操作数栈,动态链接,方法返回地址。 局部变量表: 局部变量表主要存放了编译器可知的各种数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference类型,它不同于原创 2021-10-26 21:55:07 · 1083 阅读 · 2 评论 -
JVM Java虚拟机运行机制与原理
一:简介1.Java虚拟机(Jvm)是什么?2.Java虚拟机是用来干什么的?3.Java虚拟机它的体系结构是什么样子的?4.Java虚拟机在工作做扮演什么角色?5.Java虚拟机在运行时数据区?二:Jvm基础概念Java虚拟机(Jvm)是可运行Java代码的假想计算机Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。在了解Jv...转载 2019-03-03 17:12:45 · 197 阅读 · 0 评论