final class IORuntime extends AnyRef
- Annotations
- @implicitNotFound()
- Source
- IORuntime.scala
- Alphabetic
- By Inheritance
- IORuntime
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- val compute: ExecutionContext
- val config: IORuntimeConfig
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def liveFiberSnapshot(): FiberSnapshot
Obtains a snapshot of the fibers currently live on the IORuntime which this fiber monitor instance belongs to.
Obtains a snapshot of the fibers currently live on the IORuntime which this fiber monitor instance belongs to.
The returned FiberSnapshot contains hard references to the underlying fibers and their current state, worker assignments, and execution traces. It can be used for debugging, diagnostics, or visualizations.
This method is intended primarily for external tools, such as debuggers, monitoring agents, or test frameworks. As such, it is not wrapped in cats.effect.IO or cats.effect.SyncIO since this API is expected to be used outside the effect context. Requiring an
IOhere would make integration with external tools more cumbersome or even impossible.Print all live fibers grouped by worker:
val printFiberDump: IO[Unit] = for { // Take a snapshot of all live fibers in the current IORuntime snapshot <- IO.delay(runtime.liveFiberSnapshot()) // Print fibers assigned to specific worker threads // `workers` API is available only on JVM and Scala Native platforms _ <- snapshot.workers.toList.traverse_ { case (worker, fibers) => IO.println("Worker " + worker.thread + " #" + worker.index) >> fibers.traverse_(fiber => IO.println(fiber.pretty)) } // Print global fibers (not bound to specific workers, e.g., blocked or external) _ <- snapshot.external.traverse_(fiber => IO.println(fiber.pretty)) } yield ()
- Note
the snapshot introduces a risk of memory leaks because it retains hard references to the underlying Fiber instances. As a result, these fibers cannot be garbage collected while the snapshot (or anything that retains it) is still in scope.
,this method is part of the
unsafepackage and should be used with care. Its primary purpose is for runtime introspection, not for application logic.
Example: - val metrics: IORuntimeMetrics
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- val scheduler: Scheduler
- val shutdown: () => Unit
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- IORuntime → AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()