gpt4 book ai didi

linux - JVM控制系统线程

转载 作者:太空宇宙 更新时间:2023-11-04 09:16:54 26 4
gpt4 key购买 nike

我正在阅读 JVM 中的垃圾收集器。据记载,在收集的某些阶段,应用程序线程会停止。

我不确定 JVM(线程的所有者)如何停止线程。我不确定 JVM thread 如何控制创建的线程。我看到 java 进程是该线程的所有者,但直到那天我还没有看到停止运行线程的方法。我想并且我隐含地假设 Java 包装了 Unix 线程。 (请解释这个问题,因为我不确定)。

最佳答案

JVM 可以控制线程,因为线程相互协作。只有几种可能性:

  1. 线程可能正在执行 JVM 本身的代码,例如口译员。然后,显然,该代码可以包含检查是否需要线程挂起。

  2. 它可以执行生成的代码,将字节代码编译为本地代码的结果。由于 JVM 的代码生成器生成了该代码,因此它需要插入必要的代码以支持在“安全点”挂起线程。

  3. 它可以执行不支持线程挂起的任意 native 代码。在那种情况下,没关系,因为该代码不会干扰垃圾收集等服务。访问 Java 堆的唯一方法是通过 JVM 提供的接口(interface),如 JNI。当然,一旦 native 代码调用 JVM 提供的函数来访问堆,JVM 就会控制操作并可能暂停线程直到正在进行的垃圾收集结束。

确切的机制,例如如何在底层实现安全点,对于了解 JVM 始终控制所有可能会干扰垃圾收集等进程的堆访问并不重要。并且只有那些线程需要停止。

关于linux - JVM控制系统线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46391844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com