java 中的gc是怎么一回事,内部运行是什么样的??
发布网友
发布时间:2022-03-28 16:24
我来回答
共4个回答
热心网友
时间:2022-03-28 17:53
就是垃圾回收。
在虚拟机中将对象分为新生代,旧生代和永生代,使用不同的算法进行回收。
热心网友
时间:2022-03-28 19:11
内存空闲了,就扫描堆里面的对象是否被引用,没有就摧毁
热心网友
时间:2022-03-28 20:46
JAVA垃圾回收机制的特点:
以下两个特性。
1. 自动性。Java技术提供了一个系统级的线程,即垃圾收集器线程,来跟踪每一块分配出去的内存空间,当Java 虚拟机处于空闲循环时,垃圾收集器线程会自动检查每一块分配出去的内存空间,然后自动回收每一块可以回收的无用的内存块。
2. 不可预期性。一个对象成为了垃圾,但是你不能断言,该对象在这行以后就立刻被清除,甚至有可能当程序结束后,该对象仍然占用内存。像Windows这样的软件常常会出现内存不足的情况,JAVA程序很少出现就是因为可以自动回收内存。然而,因为JAVA也不能保证及时地清除无用的对象,所以JAVA程序也会出现内存不足的情况,只是这种情况很少出现。垃圾收集线程在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用System.gc 方法来"建议"执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。
记住就算你调用了System.gc(),只是给虚拟机起建议作用,虚拟机是否立即执行回收并不可控。
热心网友
时间:2022-03-28 22:37
JAVA垃圾回收机制的特点:
以下两个特性。
1. 自动性。Java技术提供了一个系统级的线程,即垃圾收集器线程,来跟踪每一块分配出去的内存空间,当Java 虚拟机处于空闲循环时,垃圾收集器线程会自动检查每一块分配出去的内存空间,然后自动回收每一块可以回收的无用的内存块。
2. 不可预期性。一个对象成为了垃圾,但是你不能断言,该对象在这行以后就立刻被清除,甚至有可能当程序结束后,该对象仍然占用内存。像Windows这样的软件常常会出现内存不足的情况,JAVA程序很少出现就是因为可以自动回收内存。然而,因为JAVA也不能保证及时地清除无用的对象,所以JAVA程序也会出现内存不足的情况,只是这种情况很少出现。垃圾收集线程在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用System.gc 方法来"建议"执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。
记住就算你调用了System.gc(),只是给虚拟机起建议作用,虚拟机是否立即执行回收并不可控。希望能帮到你。