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
一、三种指针类型 1. 普通指针 2. 非类型安全指针 unsafe.Pointer(类似c的 void ) 3. 内置类型指针 uintpter(其实就是一个整数,代表地址,支持运算) 普通指针和unsafe.Pointer类型的指针都能代表引用一个地址,被GC发现。但是uintptr是不代表引用 ...
分类:
其他好文 时间:
2020-04-12 16:29:45
阅读次数:
76
垃圾回收器的发展历程 背景 01、G1解决的问题 G1垃圾回收器是04年正式提出,12开始正式支持,在17年作为JDK9默认的垃圾处理器。 在04年的时候,java程序堆的内存越来越大,从而导致程序中可存活的活对象越来越多,因此GC的STW时间越来越长。这是G1要解决的主要问题:STW带来的停顿时间 ...
分类:
其他好文 时间:
2020-04-11 09:26:48
阅读次数:
81
if($no%2 != 0) { $lstemp='<li> <div class="case-l fl fadeInDown wow"> <img src="'.$r[titlepic].'"> </div> <div class="case-r fr fadeInUp wow" data-wow ...
分类:
其他好文 时间:
2020-04-10 11:51:23
阅读次数:
162
1. 引用计数 1)当一个对象的引用被创建或者复制时,对象的引用计数加1;当一个对象的引用被销毁时,对象的引用计数减1. 2)当对象的引用计数减少为0时,就意味着对象已经再没有被使用了,可以将其内存释放掉。 2. 标记-清除 1)它分为两个阶段:第一阶段是标记阶段,GC会把所有的活动对象打上标记,第 ...
分类:
编程语言 时间:
2020-04-09 09:16:31
阅读次数:
106
1. 概述 1. 继续聊 jvm 命令行工具 2. 背景 1. 之前聊过一些简单的命令行工具 1. jps 1. 查看当前 java 进程 2. jinfo 1. 查看 java 运行参数 2. 查看当前 相关系统变量 3. jstat 1. 查看 jvm 的 堆内存,gc 统计信息 2. 如果我想 ...
分类:
编程语言 时间:
2020-04-08 20:41:39
阅读次数:
89
用法示例 jstat -[options] [pid] 1000 10 (每隔1秒监控一次,输出10次) 平时生产上比较常用的主要是关注下gc/gcutil jstat -gc [pid] 1000 10 jstat -gcutil [pid] 1000 10 参数详解 1. gc 统计jdk gc ...
分类:
Web程序 时间:
2020-04-06 23:51:53
阅读次数:
112
导致Full GC一般由于以下几种情况: 1)老年代空间不足 调优时尽量让对象在新生代(细分为Eden和幸存区)GC时被回收、让对象在新生代多存活一段时间(增大新生代内存或者调高晋升老年代的门槛)和不要创建过大的对象及数组避免直接在老年代创建对象 2)新生代设置过小 一是新生代GC次数非常频繁,增大 ...
分类:
其他好文 时间:
2020-04-06 22:14:33
阅读次数:
105
1对象的分配 CLR要求所有的对象都是从托管堆分配。 CLR划出一个地址空间区域作为托管堆。 CLR还要维护一个指针,NextObjPtr。 用来指向下一个对象在堆中分配的位置。 一个区域被非垃圾对象填满,CLR会分配更多的区域。一直重复,直到整个进程的地址空间被填满。所以你的应用程序受进程的虚拟地 ...
分类:
Web程序 时间:
2020-04-06 20:13:35
阅读次数:
88