JVM
悔建阿里杰克马
这个作者很懒,什么都没留下…
展开
-
JVM-内存大纲
什么是JVM?什么是JVM内存模型? 备注:本文讲的基于JDK1.8,且1.8之前和之后差距略大,本文对1.8之前的版本只会略微介绍. JVM说白了,就是个程序,而这个程序运行起来后,就是台计算机,而且和我们平时使用的计算机非常相似,他就是一台虚拟计算机. 那什么是JVM内存模型?就是几个大神写了一个在计算机上运行的虚拟计算机的内存模型. 那计算机的内存模型是什么样的? 各部分功能,相信不从事该行业的人都有相当一部分知道他的大概作用,但我们还是粗略解释一下 名称|速度|介绍 --|–|-- 寄存器|速度特转载 2020-09-17 14:42:52 · 87 阅读 · 0 评论 -
JVM-垃圾回收
垃圾回收,就是通过垃圾收集器把内存中没用的对象清理掉。垃圾回收涉及到的内容有:1、判断对象是否已死;2、选择垃圾收集算法;3、选择垃圾收集的时间;4、选择适当的垃圾收集器清理垃圾(已死的对象)。 1、判断对象是否已死 判断对象是否已死就是找出哪些对象是已经死掉的,以后不会再用到的,就像地上有废纸、饮料瓶和百元大钞,扫地前要先判断出地上废纸和饮料瓶是垃圾,百元大钞不是垃圾。判断对象是否已死有引用计数算法和可达性分析算法。 (1)引用计数算法 给每一个对象添加一个引用计数器,每当有一个地方引用它时,计数器值加1转载 2020-09-17 14:29:37 · 93 阅读 · 0 评论 -
JVM-内存溢出
1、堆内存溢出 堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证GC Roots到对象之间有可达路径来避免垃圾收集回收机制清除这些对象,当这些对象所占空间超过最大堆容量时,就会产生OutOfMemoryError的异常。堆内存异常示例如下: 运行后会报异常,在堆栈信息中可以看到 java.lang.OutOfMemoryError: Java heap space 的信息,说明在堆内存空间产生内存溢出的异常。 新产生的对象最初分配在新生代,新生代满后会进行一次Minor GC,如果Minor转载 2020-09-17 14:22:34 · 125 阅读 · 0 评论 -
JVM-内存区域
Java虚拟机在运行时,会把内存空间分为若干个区域:方法区、堆内存、虚拟机栈、本地方法栈和程序计数器。 1.方法区 方法区主要用于存储虚拟机加载的类信息、常量、静态变量,以及编译器编译后的代码等数据。在jdk1.7及其之前,方法区是堆的一个“逻辑部分”(一片连续的堆空间),但为了与堆做区分,方法区还有个名字叫“非堆”,也有人用“永久代”(HotSpot对方法区的实现方法)来表示方法区。 从jdk1.7已经开始准备“去永久代”的规划,jdk1.7的HotSpot中,已经把原本放在方法区中的静态变量、字符串常转载 2020-09-17 14:20:16 · 40 阅读 · 0 评论