GC Roots面试(1),花费近一年时间整理的Java核心知识清单

1、虚拟机栈中引用的对象

如下代码所示,a 是栈帧中的本地变量,当 a = null 时,由于此时 a 充当了 GC Root 的作用,a 与原来指向的实例 new Test() 断开了连接,所以对象会被回收。


publicclass Test {

    public static  void main(String[] args) {

	Test a = new Test();

	a = null;

    }

} 

2、方法区中类静态属性引用的对象

如下代码所示,当栈帧中的本地变量 a = null 时,由于 a 原来指向的对象与 GC Root (变量 a) 断开了连接,所以 a 原来指向的对象会被回收,而由于我们给 s 赋值了变量的引用,s 在此时是类静态属性引用,充当了 GC Root 的作用,它指向的对象依然存活!


public class Test {

    public static Test s;

    public static  void main(String[] args) {

	Test a = new Test();

	a.s = new Test();

	a = null;

    }

} 

3、方法区中常量引用的对象

如下代码所示,常量 s 指向的对象并不会因为 a 指向的对象被回收而回收


public class Test {

	public static final Test s = new Test();

        public static void main(String[] args) {

	    Test a = new Test();

	    a = null;

        }

} 

4、本地方法栈中 JNI 引用的对象

这是简单给不清楚本地方法为何物的童鞋简单解释一下:所谓本地方法就是一个 java 调用非 java 代码的接口,该方法并非 Java 实现的,可能由 C 或 Python等其他语言实现的, Java 通过 JNI 来调用本地方法, 而本地方法是以库文件的形式存放的(在 WINDOWS 平台上是 DLL 文件形式,在 UNIX 机器上是 SO 文件形式)。通过调用本地的库文件的内部方法,使 JAVA 可以实现和本地机器的紧密联系,调用系统级的各接口方法,还是不明白?见文末参考,对本地方法定义与使用有详细介绍。

当调用 Java 方法时,虚拟机会创建一个栈桢并压入 Java 栈,而当它调用的是本地方法时,虚拟机会保持 Java 栈不变,不会在 Java 栈祯中压入新的祯,虚拟机只是简单地动态连接并直接调用指定的本地方法。

在这里插入图片描述


JNIEXPORT void JNICALL Java_com_pecuyu_jnirefdemo_MainActivity_newStringNative(JNIEnv *env, jobject instance,jstring jmsg) {

...

   // 缓存String的class


### 最后

小编在这里分享些我自己平时的学习资料,由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)**

**程序员代码面试指南 IT名企算法与数据结构题目最优解**

这是” 本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一-痛点, 本书选取将近200道真实出现过的经典代码面试题,帮助广“大程序员的面试准备做到万无一失。 “刷”完本书后,你就是“题王”!

![image.png](https://img-blog.csdnimg.cn/img_convert/627a86f20bbea33fd8d34d8b89aa7bcc.png)



**《TCP-IP协议组(第4版)》**

本书是介绍TCP/IP协议族的经典图书的最新版本。本书自第1版出版以来,就广受读者欢迎。

本书最新版进行」护元,以体境计算机网络技不的最新发展,全书古有七大部分共30草和7个附录:第一部分介绍一些基本概念和基础底层技术:第二部分介绍网络层协议:第三部分介绍运输层协议;第四部分介绍应用层协议:第五部分介绍下一代协议,即IPv6协议:第六部分介绍网络安全问题:第七部分给出了7个附录。

![image.png](https://img-blog.csdnimg.cn/img_convert/d826ff7c0113d974883337f3e746daac.png)


**Java开发手册(嵩山版)**

这个不用多说了,阿里的开发手册,每次更新我都会看,这是8月初最新更新的**(嵩山版)**

![image.png](https://img-blog.csdnimg.cn/img_convert/985ac002ac4212559d72f524b18fa06b.png)

**MySQL 8从入门到精通**

本书主要内容包括MySQL的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL 函数、查询数据、数据表的操作(插入、更新与删除数据)、索引、存储过程和函数、视图、触发器、用户管理、数据备份与还原、MySQL 日志、性能优化、MySQL Repl ication、MySQL Workbench、 MySQL Utilities、 MySQL Proxy、PHP操作MySQL数据库和PDO数据库抽象类库等。最后通过3个综合案例的数据库设计,进步讲述 MySQL在实际工作中的应用。

![image.png](https://img-blog.csdnimg.cn/img_convert/8ea5b7943108eb6548ba45d25c63e12e.png)


**Spring5高级编程(第5版)**

本书涵盖Spring 5的所有内容,如果想要充分利用这一领先的企业级 Java应用程序开发框架的强大功能,本书是最全面的Spring参考和实用指南。

本书第5版涵盖核心的Spring及其与其他领先的Java技术(比如Hibemate JPA 2.Tls、Thymeleaf和WebSocket)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。

![image.png](https://img-blog.csdnimg.cn/img_convert/3f28e09df49dc2b8003475f050e01881.png)


**JAVA核心知识点+1000道 互联网Java工程师面试题**

![image.png](https://img-blog.csdnimg.cn/img_convert/686a012c02716c66ccced32bd3e0323c.png)


![image.png](https://img-blog.csdnimg.cn/img_convert/867344f684fa79577a6451e4d09371e6.png)


**企业IT架构转型之道 阿里巴巴中台战略思想与架构实战**

本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

外链图片转存中...(img-iLb1usCO-1630548013451)]


[外链图片转存中...(img-HOitoXD4-1630548013451)]


**企业IT架构转型之道 阿里巴巴中台战略思想与架构实战**

本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

![image.png](https://img-blog.csdnimg.cn/img_convert/6d83300ac2e2c9739c1b2cce3821a4a3.png)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值