勿忘初衷NKU
勿忘初衷NKU
全部文章
JVM
aaa_公司(3)
aa_计算机基础(75)
aa_遇到的错误(1)
a_dalao(1)
a_zuo(1)
GitHub(1)
Java基础(1)
Java面试题讲解121(3)
JUC(2)
LeetCode(2)
mybatis(13)
MySql(1)
OS(20)
Spring(25)
SpringMVC(7)
SQL(31)
《剑指Offer》(16)
《软件测试》(1)
华为云的使用(1)
并发编程(3)
感悟(2)
操作系统(2)
数据库(4)
杂谈(1)
正式(16)
测试(3)
电商项目(1)
直播(4)
算法(13)
计算机组成原理(1)
计算机网络(7)
软件测试(5)
面经(3)
面试题目(5)
项目知乎(1)
归档
标签
去牛客网
登录
/
注册
xiaohua
曾梦想仗剑走天涯
全部文章
/ JVM
(共45篇)
13、为什么要采用分代收集算法?
分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。 因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在 Java 程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关, 比如 Http 请求中的 Sessio...
2019-09-12
0
0
12、常用的垃圾收集算法有哪些?各自的优缺点是什么?
标记-清除算法 最基础的算法是标记-清除算法,如同它的名字一样,算法分为“标记”和“清除”两个阶段: 首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。 之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行改进而得到的。 它的主...
2019-09-12
0
650
11、谈谈对内存泄漏的理解?举几个内存泄漏的案例?
内存泄漏的基本概念: 在 Java 中,内存泄漏就是存在一些不会再被使用却没有被回收的对象,这些对象有下面两个特点: 1. 这些对象是可达的,即在有向图中,存在通路可以与其相连; 2. 这些对象是无用的,即程序以后不会再使用这些对象。 如果对象满足这两个条件,这些对象就可以判定为 Ja...
2019-09-12
0
1056
10、谈谈对 Java 中引用的了解?
无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象的引用链是否可达, 判定对象是否存活都与“引用”有关。在JDK1.2以前,Java中的引用的定义很传统:如果reference类型 的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。这种定...
2019-09-12
0
513
9、被标记为垃圾的对象一定会被回收吗?
被GC判断为“垃圾”的对象一定会被回收吗? (参考博客:https://www.jianshu.com/p/e597a74c4938) 即使在可达性分析算法中不可达的对象,也并非是“非死不可”,这时候它们暂时处于“缓刑”阶段, 要真正宣告一个对象死亡,至少要经历两次标记过程。 ...
2019-09-12
1
1144
8、判断垃圾可以回收的方法有哪些?有什么优缺点?
垃圾收集器在对堆区和方法区进行回收前,首先要确定这些区域的对象哪些可以被回收, 哪些暂时还不能回收,这就要用到判断对象是否存活的算法。 1、引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1; 当引用失效时,计数器值就减1; 任何时刻计数器...
2019-09-12
0
706
7、对象的访问定位的两种方式?
1、通过句柄方式访问 2、直接指针访问方式 (参考博客:https://www.cnblogs.com/lonecloud/p/7512034.html) Java 程序通过栈上的引用数据来操作堆上的具体对象。目前主流的对象访问方式有:句柄 和 直接指针。 1. 使用句柄 ...
2019-09-12
0
641
0407Java 对象的大小是怎么计算的?
基本数据的类型的大小是固定的。对于非基本类型的 Java 对象,其大小就值得商榷。在 Java 中,一个空 Object 对象的大小是 8 byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句: Object ob = new Object(); 这样在程序中完成了一个...
2019-09-12
0
388
0406Java 中的参数传递时传值呢?还是传引用?
1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的 2、对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。
2019-09-12
0
389
为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗?
1、从软件设计的角度来看,栈代表了处理逻辑,而堆代表了数据, 这样分离使得处理逻辑更为清晰。这种隔离、模块化的思想在软件设计的方方面面都有体现。 2、堆与栈的分离,使得堆中的内容可以被多个栈共享。 这种共享有很多好处,一方面提供了一种有效的数据交互方式(如内存共享),另一方面,节...
2019-09-12
0
1493
首页
上一页
1
2
3
4
5
下一页
末页