随笔分类 - # JVM
可作为GC root的对象
摘要:可以作为GC Root的对象: 虚拟机栈中的引用对象方法区中类静态属性引用的对象方法区中常量引用对象本地方法栈中JNI引用对象
阅读全文
JVM调优
摘要:JVM调优 idea中选择help-edit custom vm options 打开配置文件,修改一下参数 -XX:MetaspaceSize=128m (元空间默认大小) -XX:MaxMetaspaceSize=128m (元空间最大大小) -Xms1024m (堆最大大小) -Xmx1024
阅读全文
Java 内存模型& JVM 内存结构
摘要:这两个概念估计有不少人会混淆,它们都可以说是 JVM 规范的一部分,但真不是一回事!它们描述和解决的是不同问题,简单来说, Java 内存模型,描述的是多线程允许的行为JVM 内存结构,描述的是线程运行所设计的内存空间 JVM 是什么呢?它屏蔽了底层架构的差异性,是 Java 跨平台的依据,也是每个
阅读全文
JVM:可达性分析算法
摘要:在堆里存放着几乎多有的java对象实例,垃圾搜集器在对堆进行回收之前,第一件事情就是确定这些对象之中哪些还“存活”着(即通过任何途径都无法使用的对象)。 一、可达性分析算法 在Java中,是通过可达性分析(Reachability Analysis)来判定对象是否存活的。该算法的基本思路就是通过一些
阅读全文
JVM GC的类型和策略
摘要:以及今天谈到的的JVM GC的类型和策略,特别是大家经常混淆的Minor GC、Major GC、Full GC,年轻代GC、老年代GC,之间有什么区别和联系。 Minor GC JVM堆内存被分为两部分:年轻代(Young Generation)和老年代(Old Generation)。 1.年轻
阅读全文
【JVM系列】7、JVM调优
摘要:堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0
阅读全文
【JVM系列】6、Jvm垃圾回收器(终结篇)
摘要:Jvm垃圾回收目前就准备了这三篇博文进行整理,在写博文的过程中我也是边看边记载的,我觉得这种学习方式更容易让人记住,不会轻易忘记。以前的学习模式都是看PDF文档、看书等,但是有个缺点就是当时记住了过段时间就会忘记,因此想把学习过程中重要的部分做个笔记总结,以便于后期复习回顾(学习技巧仅个人观点)同时
阅读全文
【JVM系列】5、Jvm垃圾回收器(算法篇)
摘要:在《【JVM系列】4、Jvm垃圾回收器(基础篇)》中我们主要学习了判断对象是否存活还是死亡?两种基础的垃圾回收算法:引用计数法、可达性分析算法。以及Java引用的4种分类:强引用、软引用、弱引用、虚引用。和方法区的回收介绍。 那么接下来我们重点研究下虚拟机的几种常见的垃圾回收算法:标记-清除算法、复
阅读全文
【JVM系列】4、Jvm垃圾回收器(基础篇)
摘要:一:概述 在这篇文章中《【JVM系列】1、运行时数据区》介绍了Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈,3个区域随着线程的生存而生存的。内存分配和回收都是确定的。随着线程的结束内存自然就被回收了,因此不需要考虑垃圾回收的问题。而Java堆和方法区则不一样,各线程共享,内
阅读全文
【JVM系列】3、Java内存模型(JMM)
摘要:1.Java内存模型概述 Java内存模型是一种抽象概念,不是真实存在的。主要定义了程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存取出变量这样的底层细节。注意:这里的变量仅包括实例字段、静态字段、构成数组对象的元素,但不包括局部变量与方法参数。因为后者是线程私有的,不会被共享,自然就
阅读全文
【JVM系列】2、类的加载机制
摘要:1.概述 虚拟机加载Class文件(二进制字节流)到内存,并对数据进行校验、转换解析和初始化,最终形成可被虚拟机直接使用的Java类型,这一系列过程就是类的加载机制。 2.类的加载时机 类从被虚拟机加载到内存开始,直到卸载出内存为止,整个生命周期包括:加载——验证——准备——解析——初始化——使用—
阅读全文
【JVM系列】1、运行时数据区
摘要:一:运行时数据区 Java虚拟机在执行Java程序的过程中会把它管理的内存分为若干个不同的数据区域。这些区域有着各自的用途,一级创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范》中规定,jvm所管理的内存大致包括以下几个运
阅读全文
JVM核心参数用法详解
摘要:堆内存相关 参数描述-Xmx设置最大堆内存大小。例如 -Xmx2G 表示2GB的最大堆内存。-Xms设置初始堆内存大小。例如 -Xms512M 表示512MB的初始堆内存。-XX:NewRatio设置新生代和老年代的比例。例如 -XX:NewRatio=2 表示新生代和老年代比例为1:2。 垃圾回收
阅读全文
常见垃圾收集算法(4种)
摘要:几种常见的垃圾收集算法的核心思想。 1.Mark-Sweep(标记-清除)算法 这是最基础的垃圾回收算法,之所以说它是最基础的是因为它最容易实现,思想也是最简单的。标记-清除算法分为两个阶段:标记阶段和清除阶段。标记阶段的任务是标记出所有需要被回收的对象,清除阶段就是回收被标记的对象所占用的空间。具
阅读全文
JVM内存结构
摘要:jvm内存结构:《Java虚拟机原理图解》3、JVM运行时数据区 程序计数器: 1,是执行的字节码的行号指示器,记录的是正在执行的虚拟机字节码指令的地址。 2,每个线程都有独立计数器,互不干扰。 3,唯一不会发生内存泄漏的一块区域。 Java虚拟机栈: 1,这是我们通常所说的“堆和栈”中存放局部变量
阅读全文
《深入理解Java虚拟机》读书笔记
摘要:《深入理解Java虚拟机:JVM高级特性与最佳实践》读书笔记 第一部分 走进Java 一、走进Java 1、概述 java广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合,摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想 2、java技术体系结构 按照功能来划分 包括以下几个组成
阅读全文
Java虚拟机(JVM)大全
摘要:1. Java 内存区域与内存溢出异常 1.1 运行时数据区域 根据《Java 虚拟机规范(Java SE 7 版)》规定,Java 虚拟机所管理的内存如下图所示。 1.1.1 程序计数器 内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、
阅读全文