Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 垃圾收集是否会影响性能?_Performance_Garbage Collection - Fatal编程技术网

Performance 垃圾收集是否会影响性能?

Performance 垃圾收集是否会影响性能?,performance,garbage-collection,Performance,Garbage Collection,我刚刚阅读了一些编程语言的性能,我注意到垃圾收集经常被提及。垃圾收集会影响语言的性能吗?如果是,如何进行 这主要取决于语言/运行时 在某些实现中,GC可以暂停应用程序(挂起线程),然后执行收集,从而导致性能问题 一些实现执行优化,让您的代码在GC收集未引用对象时运行。例如,不能使用不同的收集模式和对象堆,也不能在性能敏感的代码区域中运行 我不能给出更多的细节,因为所有这些都是特定于实现的。但我应该提到的是,语言运行时通常会非常努力地优化它们的GCs,而且大多数时候你甚至不会注意到它的存在。尽管在

我刚刚阅读了一些编程语言的性能,我注意到垃圾收集经常被提及。垃圾收集会影响语言的性能吗?如果是,如何进行

这主要取决于语言/运行时

在某些实现中,GC可以暂停应用程序(挂起线程),然后执行收集,从而导致性能问题

一些实现执行优化,让您的代码在GC收集未引用对象时运行。例如,不能使用不同的收集模式和对象堆,也不能在性能敏感的代码区域中运行


我不能给出更多的细节,因为所有这些都是特定于实现的。但我应该提到的是,语言运行时通常会非常努力地优化它们的GCs,而且大多数时候你甚至不会注意到它的存在。尽管在非常特殊的情况下,这可能会成为一个问题,希望有可能解决这个问题,以最小化GC压力。

这里需要记住的一点是,没有垃圾收集的语言仍然必须分配和释放对象。垃圾收集允许操作的“空闲”部分成批发生,并且在应用程序相对空闲的时候发生。换句话说,一个高效的垃圾收集器有可能更快(虽然我们还没有做到这一点,但它们一直在改进)

诀窍在于,当垃圾收集确实发生时,收集器仍然必须花费资源来分析哪些是可访问的,哪些不是,或者哪些引用计数>0,哪些不是。这是对表现的惩罚


<> P>结果是,对于大多数垃圾收集平台,收集器是评估性能时要考虑的一个因素。垃圾收集器的净效应可能是最小的,甚至是净正效应在应用程序会话的整个生命周期内,可能存在短期的负面影响。

垃圾收集是一种清除未使用对象以释放资源分配的机制,垃圾收集器基于一种健壮的算法来分配哪些对象应该干净,哪些不干净。这个过程消耗资源,所以建议开发人员应该显式地释放或清理未使用的对象

<>使用适当的集合应提高应用程序的性能和资源消耗。强类型和数组始终具有较高的优先级,以避免装箱/拆箱,并降低管理集合的资源成本


请参阅使用数组、ArrayList、哈希表。

添加到这一点:.Net优化了将收集与压缩分离的内容。GC可以在其他线程运行时完成这项工作,因为它将整合内存漏洞作为单独进程的一部分来处理,因此不会将对象从另一个线程下移出。