首页编程java编程java为什么有gc(java中GC是什么为什么要有GC)

java为什么有gc(java中GC是什么为什么要有GC)

编程之家2023-10-1199次浏览

其实java为什么有gc的问题并不复杂,但是又很多的朋友都不太了解java中GC是什么为什么要有GC,因此呢,今天小编就来为大家分享java为什么有gc的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

java为什么有gc(java中GC是什么为什么要有GC)

java的gc为什么要分代

假如哈,现在的计算机能做的1ms扫描完所有live object,10ms完成live set的整理(compaction),大多数java应用都会觉得“这没毛病了”,那么,现在Hotspot JVM设计的那几套GC算法组合确实就没意义了。下面,再继续谈一哈GC的哲学。类似分布式系统的CAP theorem,GC算法设计也是有这个3取2的三角组合的:即延时(latency)、吞吐(throughput)和内存消耗(footprint)。基本的设计原理就是footprint为有限值的条件下,我们再在latency和throughput上挑一个优化,比如Hotspot JVM实现中,CMS算法主攻latency,Parallel GC主攻throughput,G1 GC较关注latency同时兼顾一点throughput。来来来,我们开个脑洞:我们能不能放弃或减弱“footprint为有限值”这个条件。嗯~比如,一个应用1小时使用100G memory(暂时不管这100G会产生多少垃圾),服务器24小时会重启一次,那么,每次重启前java应用需要使用的内存会达到2,400G。也就是说,在这个case中,java能使用的内存如果能大于2,400G,我们根本就是不需要任何GC算法,not to mention什么分代了;“java的gc为什么要分代”的哲学又是啥。我认为,是熵增原理和 80/20法则。

java中GC是什么为什么要有GC

GC是垃圾回收的意思(gabage collection),内存处理器是编程人员容易出现问题的地方,忘记或者错误的内存回收导致程序或者系统的不稳定甚至崩溃,java的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,java语言没有提供释放已分配内存的俄显示操作方法。

希望能帮到你,谢谢!

java为什么有gc(java中GC是什么为什么要有GC)

GC是什么为什么要有GC

GC:Java的垃圾回收器。

Java是由C++发展来的。它摈弃了C++中一些繁琐容易出错的东西。其中有一条就是这个GC。

写C/C++程序,程序员定义了一个变量,就是在内存中开辟了一段相应的空间来存值。内存再大也是有限的,所以当程序不再需要使用某个变量的时候,就需要释放这个内存空间资源,好让别的变量来用它。在C/C++中,释放无用变量内存空间的事情要由程序员自己来解决。就是说当程序员认为变量没用了,就应当写一条代码,释放它占用的内存。这样才能最大程度地避免内存泄露和资源浪费。但是这样显然是非常繁琐的。程序比较大,变量多的时候往往程序员就忘记释放内存或者在不该释放的时候释放内存了。而且释放内存这种事情,从开发角度说,不应当是程序员所应当关注的。程序员所要做的应该是实现所需要的程序功能,而不是耗费大量精力在内存的分配释放上。

java为什么有gc(java中GC是什么为什么要有GC)

Java有了GC,就不需要程序员去人工释放内存空间。当Java虚拟机发觉内存资源紧张的时候,就会自动地去清理无用变量所占用的内存空间。当然,如果需要,程序员可以在Java程序中显式地使用System.gc()来强制进行一次立即的内存清理。

Java中 gc的作用是什么

System.gc()用来强制立即回收垃圾,即释放内存。

java对内存的释放采取的垃圾自动回收机制,在编程的时候不用考虑变量不用时释放内存,java虚拟机可以自动判断出并收集到垃圾,但一般不会立即释放它们的内存空间,当然也可以在程序中使用System.gc()来强制垃圾回收,但是要注意的是,系统并不保证会立即进行释放内存

关于java为什么有gc到此分享完毕,希望能帮助到您。

java 滚动条为什么显示在最下,Java swing 如何让垂直滚动条始终在最下面计算机java是什么意思啊(java是什么意思)