JVM垃圾回收的算法很多,但是不管是哪种算法,在进行GC时大致的流程都是差不多的,主要有以下3个过程: ###1. 枚举根节点 这个过程主要是找到所有的GC Roots对象,这些对象一般发生在JVM虚拟机栈栈帧、常量池中的静态对象、方法区中静态类属性引用、本地方法栈中引用的对象。这个过程会发生STW ...
分类:
其他好文 时间:
2020-07-12 13:56:39
阅读次数:
63
在Java虚拟机中,如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。一共有4类引用: 强引用(Strong Reference) 类似Object obj = new Object()这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用 ...
分类:
编程语言 时间:
2020-07-12 13:53:05
阅读次数:
71
第六天的问题 1'方法就是函数的意思,但定义不太一样public static void nprintln(String message,int n){} 2'finalize()方法,垃圾收集器。析构函数回收前调用,清理回收对象 3'输入不同 scanner类 next方法、nextLine方法 ...
分类:
其他好文 时间:
2020-07-11 23:19:02
阅读次数:
88
Hotspot算法细节实现 我们以可达性分析算法中,从GC Roots集合找引用链这个操作作为介绍虚拟机高效实现的第一个例子。 固定可作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)中,但查找过程并非易事,光是方法区的大小就常有数百上千兆,里 ...
分类:
其他好文 时间:
2020-07-11 09:43:01
阅读次数:
52
收到通知 7月6日下午收到运维转告公司收到ICP的邮件,告知公司主站已被注销,该站的备案号已被收回。收到通知的那一刻就傻了,这意味这上百个子域名将被停用,紧接着就发现部分网站已经开始出现TestPage 184的提示。 更换域名 第一时间想到的是更换域名,被注销的域名是xxx.com,公司名下还有一 ...
分类:
其他好文 时间:
2020-07-11 00:09:32
阅读次数:
93
类名(){} 1.构造函数没有返回值也不写void 2.函数名称与类名相同 3.构造函数可以有参数,因此金额已发生重载 4.程序在调用对象时候会自动调用构造,无需手动调用,而且只会调用一次 析构函数语法 ~类名(){} 1.析构函数,没有返回值也不写void 2.函数名称与类名相同,在名称前加上~ ...
分类:
其他好文 时间:
2020-07-10 21:03:58
阅读次数:
54
二、jvm内存泄漏 1.堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证GC Roots到对象之间有可达路径来避免垃圾收集回收机制清除这些对象,当这些对象所占空间超过最大堆容量时,就会产生OutOfMemoryError的异常。 新产生的对象最初分配在新生代,新生代满后会进行一次Min ...
分类:
其他好文 时间:
2020-07-10 18:35:00
阅读次数:
68
一、问题原因 用JMeter压测,有时候当模拟并发请求较大或者脚本运行时间较长时,JMeter会停止,报OOM(内存溢出)错误。 原因是JMeter是一个纯Java开发的工具,内存由java虚拟机JVM管理,当内存回收不及时,堆内存不足时,就会报内存溢错误。 概念补充: 内存泄露:应用使用资源之后没 ...
分类:
编程语言 时间:
2020-07-10 15:43:43
阅读次数:
124
1.1 关于Caffeine Cache ? Google Guava Cache是一种非常优秀本地缓存解决方案,提供了基于容量,时间和引用的缓存回收方式。基于容量的方式内部实现采用LRU算法,基于引用回收很好的利用了Java虚拟机的垃圾回收机制。其中的缓存构造器CacheBuilder采用构建者模 ...
分类:
系统相关 时间:
2020-07-10 13:38:09
阅读次数:
146
MySQL innodb线程 一、master therad ①、刷新脏页到磁盘 ②、将日志缓冲刷新到磁盘 ③、undo页回收 ④、合并插入缓冲 参数innodb_io_capacity表示每秒刷新脏页的数量,默认为200。 innodb_max_dirty_pages_pct设置出发刷盘的脏页百分 ...
分类:
数据库 时间:
2020-07-10 11:46:22
阅读次数:
53