1. 问题描述 在运行代码之后,出现以下错误: 经查询之后,是由于JVM花费太长时间执行GC且只能回收很少的堆内存时抛出的 一般可以通过更改JVM启动配置增加堆大小来解决 参考:https://blog.csdn.net/github_32521685/article/details/8995379 ...
分类:
其他好文 时间:
2020-04-13 00:52:16
阅读次数:
62
1、引用计数法 如果某个地方引用了这个对象就+1,如果失效了就-1,当为0就会回收但是JVM没有用这种方式,因为无法判定相互循环引用(A引用B,B引用A)的情况 2、引用链法(可达性分析) 通过一种GC ROOT的对象(虚拟机栈(栈帧中的本地变量表)中引用的对象、方法区中类静态属性引用的对象、方法区 ...
分类:
其他好文 时间:
2020-04-12 23:07:09
阅读次数:
169
ByteBuf直接与底层IO打交道 1、内存类别有哪些 2、如何减少多线程内存分配竞争 3、不同大小内存是如何分配的 内存与内存管理器的抽象 不同规格大小和不同内存类别的分配策略 内存回收 ByteBuf结构 readerIndex,表示要读数据从当前指针开始读,从0到readerIndex这段空间 ...
分类:
Web程序 时间:
2020-04-12 22:46:12
阅读次数:
93
两种分类方式: 1.按参数分为:有参构造和无参构造(默认构造) 2.按类型分为:普通构造和拷贝构造 三种调用方式: 1.括号法 2.显示法 3.隐式转换法 匿名对象的特点:特点:当前行执行结束后,系统会立即回收掉匿名对象 1 #include <iostream> 2 using namespace ...
分类:
其他好文 时间:
2020-04-11 12:41:09
阅读次数:
61
垃圾回收器的发展历程 背景 01、G1解决的问题 G1垃圾回收器是04年正式提出,12开始正式支持,在17年作为JDK9默认的垃圾处理器。 在04年的时候,java程序堆的内存越来越大,从而导致程序中可存活的活对象越来越多,因此GC的STW时间越来越长。这是G1要解决的主要问题:STW带来的停顿时间 ...
分类:
其他好文 时间:
2020-04-11 09:26:48
阅读次数:
81
此系列一共有8篇:编程语言篇|数据结构篇|操作系统篇|组成原理篇|计算机网络篇|数据库篇|软件工程篇|计算机专业英语篇(还未全部完成,敬请期待,你们的支持和关注是我最大的动力!)
分类:
其他好文 时间:
2020-04-10 18:34:15
阅读次数:
171
1. 引用计数 1)当一个对象的引用被创建或者复制时,对象的引用计数加1;当一个对象的引用被销毁时,对象的引用计数减1. 2)当对象的引用计数减少为0时,就意味着对象已经再没有被使用了,可以将其内存释放掉。 2. 标记-清除 1)它分为两个阶段:第一阶段是标记阶段,GC会把所有的活动对象打上标记,第 ...
分类:
编程语言 时间:
2020-04-09 09:16:31
阅读次数:
106
在堆里面存放着各种各类的Java对象,垃圾收集器在对堆进行垃圾回收时,首要就是判断哪些对象还活着,哪些对象已经死去(即不被任何途径引用的对象)。 标记清除算法: 标记清除算法简单概括为:给对象添加一个引用计数器,每当有一个地方引用该对象时,计数器+1,当引用失效时,计数器-1,任何时刻,当计数器为0 ...
分类:
其他好文 时间:
2020-04-08 17:37:36
阅读次数:
84
JavaScript 的组成 JavaScript 由以下三部分组成: ECMAScript(核心):JavaScript 语言基础 DOM(文档对象模型):规定了访问 HTML 和 XML 的接口 BOM(浏览器对象模型):提供了浏览器窗口之间进行交互的对象和方法 JS 的基本数据类型和引用数据类 ...
分类:
Web程序 时间:
2020-04-08 16:16:18
阅读次数:
78
读一个文件,忘记关闭了流,你在操作系统里对这个文件的写,删除等操作就会报错,告诉你这个文件被某个进程占用,这是为什么呢? java是从c++设计来的,但是无论是C语言还是C++,都需要手动释放内存,java不需要。 因为java在对象的引用被消除之后,正常情况下,内存资源是会被垃圾回收。 使用完IO ...
分类:
其他好文 时间:
2020-04-07 15:38:18
阅读次数:
137