jvm
M_Jack
这个作者很懒,什么都没留下…
展开
-
内存与异常复习
首先来看异常的根节点Throwable是所有异常的根,java.lang.Throwable Error是错误,java.lang.Error Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形.这种异常会导致JVM中断,必须人为处理 java虚拟机中发生的,不需要程序猿try-catch或者抛出 StackOutFlowError(栈溢出)和Ou...转载 2020-04-24 17:07:28 · 265 阅读 · 0 评论 -
Java类加载过程
Java的类的生命周期为:加载、验证、准备、解析、初始化、使用、卸载七个生命周期。其中,加载、验证、准备、解析、初始化可以称之为类的加载过程,而加载和类加载过程是有区别的,它只是类加载过程的一个阶段,这点不要搞糊涂了。 下面主要介绍一下类加载过程中各个阶段所做的事情。 加载 这个阶段主要完成三件事情: 1)通过一个类的全限定类名来获取描述此类的二进制字节流。 2)...转载 2020-01-14 16:11:04 · 303 阅读 · 0 评论 -
java常见面试题及答案 11-20(JVM)
11.JVM内存分哪几个区,每个区的作用是什么?java虚拟机主要分为以下一个区:方法区:1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载2. 方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据。3. 该区域是被线程共享的。4. 方法区里有一个运行时常量池,用于存放...转载 2020-01-01 18:10:34 · 220 阅读 · 0 评论 -
垃圾回收机制GC知识再总结兼谈如何用好GC
一、为什么需要GC应用程序对资源操作,通常简单分为以下几个步骤:1、为对应的资源分配内存2、初始化内存3、使用资源4、清理资源5、释放内存应用程序对资源(内存使用)管理的方式,常见的一般有如下几种:1、手动管理:C,C++2、计数管理:COM3、自动管理:.NET,Java,PHP,GO…但是,手动管理和计数管理的复杂性很容易产生以下典型问题:1.程...转载 2019-08-21 14:48:22 · 279 阅读 · 0 评论 -
Eclipse设置JVM的内存参数
打开Eclipse 或者 MyEclipse 打开 Windows -> Preferences -> Java -> Installed JREs 选中你所使用的 JDK,然后点击 Edit,会出现如下图: 在 Default VM Arguments输入框内输入: -Xms512m -Xmx512m 解释:...转载 2019-02-11 14:51:42 · 1050 阅读 · 0 评论 -
JVM垃圾回收算法与参数配置
★引用计数法 这是个古老而经典的垃圾收集算法,其核心就是在对象被其他所引用时计数器+1,而当引用失效时-1,但是这种方式有非常严重的问题:无法处理循环引用的情况,还有就是每次进行加减操作比较浪费系统性能。★标记清除法 分为标记和清除两个阶段进行处理内存中的对象,当然这种方式也有非常大的弊端,就是空间碎片问题,垃圾回收后的空间不连续,不连续的内存空间工作效率低于连续的内存空间。★复制算法...转载 2018-11-18 16:41:25 · 219 阅读 · 0 评论 -
java虚拟机学习之(五)垃圾收集器与垃圾回收算法
经过前面是学习我们已经对java运行时区域的各个部分有了一定的了解,其中程序计数器,虚拟机栈,本地方法栈3个区域属于线程私有区域,它们随着线程的创建而存在,随着线程的死亡而释放。栈中的栈帧随着方法的进入和退出也在有条不紊的进行着入栈和出栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此上述区域的内存分配和回收都是确定的,一旦方法结束或者线程结束,相应的内存自然也就被回收了。而...转载 2018-11-18 16:30:56 · 141 阅读 · 0 评论 -
《深入理解java虚拟机》 精华总结(面试)
一、运行时数据区域Java虚拟机管理的内存包括几个运行时数据内存:方法区、虚拟机栈、本地方法栈、堆、程序计数器,其中方法区和堆是由线程共享的数据区,其他几个是线程隔离的数据区1.1 程序计数器程序计数器是一块较小的内存,他可以看做是当前线程所执行的行号指示器。字节码解释器工作的时候就是通过改变这个计数器的值来选取下一条需要执行的字节码的指令,分支、循环、跳转、异常处理、线程恢复等基础功...转载 2018-11-22 20:05:18 · 192 阅读 · 0 评论 -
判断Java 对象实例是否死亡
垃圾收集器与内存分配策略参考目录:1.判断Java 对象实例是否死亡 2. Java 中的四种引用 3.垃圾收集算法 4. Java9中的GC 调优 5.内存分配与回收策略在进入主题之前,我们要先知道运行时数据区域都是有哪些块内存需要进行垃圾回收。 程序计数器、虚拟机栈、本地方法栈、3个区域都是随着线程生而生,随着线程灭而灭的;栈中的栈帧随着方法的进入和退出有条不紊的执行着...转载 2018-11-16 18:11:50 · 140 阅读 · 0 评论 -
深入分析Java规范中JVM的内存布局模型
Java是一门结合了编译执行与解释执行的语言。首先,Java编译器把Java源码编译成Java字节码(byte-code),然后,Java字节码在Java虚拟机(JVM)上解释执行。实际上,Java虚拟机在执行Java代码的过程中,会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时机,有些区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立...转载 2018-11-16 00:53:42 · 258 阅读 · 0 评论 -
深入JVM垃圾回收算法
1. 标记——清除算法(Mark-Sweep)标记——清除算法是第一种使用和比较完善的垃圾回收算法,算法分为两个过程:1、标记正所有需要回收的对象2、标记完成后清除被标记的对象。其标记的过程就是判断对象有效性,执行可达性分析的过程。其执行流程图大体如何下所示: 同样,我们也借助现实的场景进行描述。图书管里有好多人在看书,图书管理员想要收集起没有被看的书的时候,他决定让所有正在看书的人站起...转载 2018-11-16 00:52:06 · 97 阅读 · 0 评论 -
JVM内存组成&调优参数详解
总内存大小=堆内存区 + 持久代(永久代、方法区)区大小+程序计数器+Java虚拟机栈+本地方法栈;名词解释:1、堆内存区:Java程序在运行时创建的所有类实例或数组都放在同一个堆中。而一个Java虚拟实例中只存在一个堆空间,因此所有线程都将共享这个堆。每一个 java程序独占一个JVM实例,因而每个 java程序都有它自己的堆空间,它们不会彼此干扰。但是同一java程序的多个线程都共...转载 2018-07-26 01:41:22 · 327 阅读 · 0 评论 -
JVM 内存调优 与 实际案例
堆内存设置原理JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。 Heap = { Old + NEW = {Eden, from, to} },Old 即 年老代(Old Generation),New ...转载 2018-07-26 01:40:23 · 218 阅读 · 0 评论 -
深入理解JVM—JVM内存模型
我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下面的样子...转载 2018-07-26 01:38:57 · 135 阅读 · 0 评论