从原理聊JVM(三):详解现代垃圾回收器Shenandoah和ZGC | 京东云技术团队
现代的垃圾回收器为了低停顿的目标可谓将“并发”二字玩到极致,Shenandoah在G1基础上做了非常多的优化来使回收阶段并行,而ZGC直接采用了染色指针、NUMA等黑科技,目的都是为了让Java开发者可以更多的将精力放在如何使用对象让程序更好的运行,剩下的一切交给GC,我们所做的只需享受现代化GC技术带来的良好体验。
Wesley13 Wesley13
3年前
C++中基类虚析构函数的作用及其原理分析
虚析构函数的理论前提是执行完子类的析构函数,那么父类的虚构函数必然会被执行。那么当用delete释放一个父类指针所实例化的子类对象时,如果没有定义虚析构函数,那么将只会调用父类的析构函数,而不会调用子类的虚构函数,导致内存的泄漏。故: 继承时,要养成的一个好习惯就是,基类析构函数中,加上virtual。知识背景     
Wesley13 Wesley13
3年前
DLL如何导出类?
其实最好是写一个父类,把要实现的函数全部以虚函数的形式写在父类中,然后写一个子类,继承父类,重写父类的虚函数。这样的话就安全得多了。其次就在DLL中导出一个函数,返回父类的一个对象指针,再在EXE中动态链接DLL,调用导出函数。例子如下://以下是DLL的代码//class\_a.hclass A{public:
Wesley13 Wesley13
3年前
C++ 什么时候调用析构函数
析构函数是在对象消亡时,自动被调用,用来释放对象占用的空间。有四种方式会调用析构函数:1.生命周期:对象生命周期结束,会调用析构函数。2.delete:调用delete,会删除指针类对象。3.包含关系:对象Dog是对象Person的成员,Person的析构函数被调用时,对象Dog的析构函数也被调用。4.
Wesley13 Wesley13
3年前
Java学习路线图
JavaJava是一门面向对象编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立
Wesley13 Wesley13
3年前
MySQL 数据库索引
数据库索引在数据库中、索引使数据库程序无须对整个表进行全表扫描就可以在其中找到所需的数据;数据库中的索引是某个表中一列或者若干列值的集合、以及物理标识这些值的数据页的逻辑指针清单;MySQL索引的增删查(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.cnbl
Wesley13 Wesley13
3年前
.net IL 指令速查
名称说明Add将两个值相加并将结果推送到计算堆栈上。Add.Ovf将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上。Add.Ovf.Un将两个无符号整数值相加,执行溢出检查,并且将结果推送到计算堆栈上。And计算两个值的按位“与”并将结果推送到计算堆栈上。Arglist返回指向当前方法的参数列表的非托管指针
Stella981 Stella981
3年前
Linux 内核链表 list.h 的使用
C语言本身并不自带集合(Collection)工具,当我们需要把结构体(struct)实例串联起来时,就需要在结构体内声明指向下一实例的指针,构成所谓的“链表”。而为了实现对链表的操作,我们需要另外实现一系列的函数,例如添加、删除、搜索、复制等等。而利用Kernel源代码中自带的list.h,则可以方便地实现任意类型结构体的串联。编程需求
Wesley13 Wesley13
3年前
Java是一门面向对象编程语言的理解
Java是一门面向对象编程语言。不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有:简单性面向对象分布式健壮性安全性
小万哥 小万哥
11个月前
深入浅出 C 语言:学变量、掌控流程、玩指针,全方位掌握 C 编程技能
C语言简介C语言介绍C语言的特性C语言相对于其他语言的优势C程序的编译C中的HelloWorld程序参考文章:学习变量、数据类型和运算符C中的变量和关键字C语言中的作用域规则C中的数据类型运算符及其类型C语言中的类型转换参考文章:了解控制流语句C语言中的循