自动化GC的一个优点是开发人员不需要真正了解它是如何工作的 。 不幸的是 , 这意味着许多开发人员不了解它是如何工作的 。 了解垃圾收集和许多可用的GC , 有点像了解LinuxCLI命令 。 从技术上讲 , 你不需要使用它们 , 但是了解并习惯使用它们会对你的生产力产生重大影响 。 想要了解有关GC的更多知识 , 可以报名参加java培训来学习 , 在专业老师的教学指导下 , 你可以很快掌握GC使用技能 。
与CLI命令一样 , 有一些绝对的基础 。 ls命令查看父文件夹中的文件夹列表 , mv命令将文件从一个位置移动到另一个位置 , 等等 。 在GC中 , 这些命令相当于知道有多个GC可供选择 , 并且GC可能会导致性能问题 。 当然 , 还有很多东西需要学习(关于使用LinuxCLI和垃圾收集) 。
学习Java的垃圾收集过程的目的是为了学习如何有效地实现和维护适合你特定环境的具有最佳性能的正确GC 。 了解垃圾收集会影响应用程序性能是最基本的 , 有许多高级技术可以提高GC性能并减少其对应用程序可靠性的影响 。
GC性能问题
1.内存泄漏
通过了解堆结构和垃圾收集的执行方式 , 我们知道内存使用量会逐渐增加 , 直到发生垃圾收集事件并且使用量下降为止 。 被引用对象的堆利用率通常保持稳定 , 因此丢弃的卷应该大致相同 。 在java培训中 , 会有关于垃圾回收的处理方法和技巧的课程 , 学好这些技巧 , 有助于更好地进行开发项目 , 少出问题 。
在内存泄漏的情况下 , 每个GC事件都会清除一小部分堆对象(尽管留下的许多对象未被使用) , 因此堆利用率将继续增加 , 直到堆内存已满 , 并引发OutOfMemoryError异常 , 原因是GC只将未引用的对象标记为删除 , 因此 , 即使引用的对象不再使用 , 它也不会从堆中清除 。
2.持续的“Stopthe World”事件
在某些场景中 , 垃圾收集可以调用StoptheWorld事件 , 因为当它发生时 , JVM中的所有线程(以及在其上运行的应用程序)都将停止 , 以允许GC执行 。 在健康的应用程序中 , GC执行时间相对较短 , 对应用程序性能影响不大 。
但是 , 在不太理想的情况下 , Stopthe World事件可能会极大地影响应用程序的性能和可靠性 。 如果GC事件需要StoptheWorld暂停并需要2秒钟执行 , 则该应用程序的最终用户将在运行该应用程序的线程停止以允许GC时经历2秒钟的延迟 。 通过java培训学习 , 可以帮助你更好地了解垃圾回收相关问题 , 提高代码质量 。
当内存泄漏发生时 , 连续StoptheWorld事件也是有问题的 。 由于每次执行GC都会清除较少的堆内存空间 , 因此剩余内存填满所需的时间更短 。 当内存已满时 , JVM会触发另一个GC事件 。 最终 , JVM将反复运行Stopthe World事件 , 从而引起重大性能问题 。
3.CPU使用率
这一切都取决于CPU的使用 。 连续GC/StoptheWorld事件的一个主要症状是CPU使用量激增 。 GC是一个计算量很大的操作 , 因此可能需要占用更多的CPU资源 。 对于运行并发线程的GC , CPU使用率甚至更高 。 为您的应用程序选择正确的GC将对CPU使用产生最大的影响 , 但也有其他方法可以在这方面优化以获得更好的性能 。
【华为|Java培训:了解Java中的垃圾收集(GC)性能问题】我们可以从围绕垃圾收集的这些性能问题中了解到 , 无论GCs系统变得多么先进(而且越来越先进) , 它们的致命弱点仍然是一样的:冗余和不可预测的对象分配 。 要提高应用程序性能 , 选择正确的GC是不够的 。 我们需要知道这个过程是如何工作的 , 我们需要优化我们的代码 , 这样我们的GCs就不会占用过多的资源 , 或者在我们的应用程序中造成过多的暂停 。 Java培训课程 , 可以让你学习更多的内存管理技巧 , 写出高质量和已与维护的代码!
- 华为|别不信!魅族如今处境,雷军早有预料,小米也早已体验
- 华为|问界M5风光无限,赛力斯SF5暗自神伤,华为或许低估了造车这事?
- 华为鸿蒙系统|华为偷偷上架新机,鸿蒙系统+5000mAh大电池,仅售1399元
- 5G|关于5G,华为赢了
- 华为|华为任正非最新信件曝光:春天很快就会到来!
- 5G|华为利用5G毫米波发现园区入侵者,这让美国5G联盟情何以堪
- ios|华为迎来新里程碑,在新领域旗开得胜!
- 打脸!华为在美国,用专利把英特尔、苹果、微软、高通打败了
- 华为|iOS15.2.1 正式版发布:新增 6 项改进
- 鸿蒙os|麒麟9000再度发力,华为高精度导航让你出行不迷糊