垃圾收集的位置 JVM把内存区域分为多个子区。在这些子区中,程序计数器,虚拟机栈和本地方法栈生命周期与线程绑定,程序计数器始终指向当前执行的字节码位置,或为空,虚拟机栈和本地方法栈则随着方法的执行和结束执行如栈和出栈操作,每一个栈帧的内存大小在类结构确定下来时就为已知的,因此在这些子区中的内存分配和 ...
分类:
其他好文 时间:
2019-12-29 15:01:20
阅读次数:
61
介绍 Java堆(Java Heap)是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。Java堆是垃圾收集器管理的主要区域,因此很多时候也被称做“GC堆”。如果从内存回收 ...
分类:
其他好文 时间:
2019-12-28 22:47:48
阅读次数:
78
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 一、对象的标记 1、什么是标记?怎么标记? 第一个问题相信大家都知道,标记就是对一些已死的对象打上记号,方便垃圾收集器的清理。 至于怎么标记,一般有两种方法:引用计数和可达性分析。 引用计数实现起来比较简单,就是给对象添 ...
分类:
编程语言 时间:
2019-12-24 23:49:15
阅读次数:
166
常见的垃圾收集器 参考这篇文章:https://crowhawk.github.io/2017/08/15/jvm_3/ 如何判断某个对象为垃圾 引用计数法 目前主流的java虚拟机都摒弃掉了这种算法,最主要的原因是它很难解决对象 之间相互循环引用的问题。尽管该算法执行效率很高。 例如:在testG ...
分类:
编程语言 时间:
2019-12-23 22:19:18
阅读次数:
73
语言特性 显著特点 1. 一次编译,到处运行,通过 java 虚拟机获取跨平台性 2. 垃圾回收,通过垃圾收集器回收内存 解释和编译 1. 一般情况下,java 源文件经过编译后,得到 .class 字节码文件,再被 jvm 解释器解释执行 2. JIT,just in time compile,即 ...
分类:
编程语言 时间:
2019-12-23 13:26:47
阅读次数:
87
RabbitMQ 面试题 1、什么是 rabbitmq 2、为什么要使用 rabbitmq 3、使用 rabbitmq 的场景 4、如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息? 5.如何避免消息重复投递或重复消费? 6、消息基于什么传输? 7、消息如何分发? 8、消息 ...
分类:
其他好文 时间:
2019-12-20 20:41:43
阅读次数:
115
一、MAT是什么? MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。使用内存分析工具从众多的对象中进行分析,快速的计算出在内存中对象的占用大小,看看是谁阻止了垃圾收集 ...
分类:
其他好文 时间:
2019-12-19 14:37:29
阅读次数:
165
垃圾收集分两大块内容: 新生代垃圾收集、老年代垃圾收集 两者各有特性,在新生代内存中,大部分对象朝生夕死,GC的垃圾回收算法大多为复制算法 老年代内存中对象的存活率较高,古选择标记-整理、标记-清除算法较多 新生代收集器有三款: Serial收集器、ParNew收集器、Parallel Scaven ...
分类:
其他好文 时间:
2019-12-18 14:47:21
阅读次数:
88
CMS(Concurrent Mark Sweep)收集器是一种以获取 最短回收停顿时间 为目标的收集器。采用的是"标记-清除算法",整个过程分为4步 由于整个过程中,并发标记和并发清除,收集器线程可以与用户线程一起工作,所以总体上来说,CMS收集器的内存回收过程是与用户线程一起并发地执行的。集器 ...
分类:
其他好文 时间:
2019-12-18 14:26:30
阅读次数:
76
一、内存分配 1.JVM体系结构 2.运行时数据区域 3.内存分配二、内存回收 1.垃圾收集算法 2.垃圾收集器三、相关参考一、内存分配JVM体系结构 在了解自动内存管理的内存分配之前,我们先看下JVM的体系结构。代码编译的结果是从本地机器码转变为字节码,经过类加载器加载到虚拟机后才能执行程序。JV ...
分类:
编程语言 时间:
2019-12-18 13:12:18
阅读次数:
89