runtime 包

介绍

该包用于提供内存管理功能,包括一些内存数据的读取。

术语表

术语说明
仓颉堆仓颉运行时管理的堆内存, 是仓颉做动态内存分配的内存空间。
水线值当仓颉堆分配的对象大小大于此值时,则进行一次 GC。

主要接口

struct MemoryInfo

public struct MemoryInfo

MemoryInfo 用于提供获取一些堆内存统计数据的接口。

prop maxHeapSize

public static prop maxHeapSize: Int64

功能:获取仓颉堆可以使用的最大值, 单位为 byte。

prop allocatedHeapSize

public static prop allocatedHeapSize: Int64

功能:获取仓颉堆已被使用的大小, 单位为 byte。

prop heapPhysicalMemory

public static prop heapPhysicalMemory: Int64

功能:获取仓颉堆实际占用的物理内存大小, 单位为 byte。

struct ThreadInfo

public struct ThreadInfo

ThreadInfo 用于提供获取一些仓颉线程统计数据的接口。

prop threadCount

public static prop threadCount: Int64

功能:获取仓颉当前的线程数量。

prop blockingThreadCount

public static prop blockingThreadCount: Int64

功能:获取阻塞的仓颉线程数。

prop nativeThreadCount

public static prop nativeThreadCount : Int64

功能:获取物理线程数。

func GC

public func GC(heavy!: Bool = false): Unit

功能:执行 GC。

参数:

  • heavy:如果为 true,执行会慢,收集的多一些,默认为 false

func SetGCThreshold

public func SetGCThreshold(value: UInt64) : Unit

功能:修改用户期望的 GC 的水线值,当仓颉堆大小超过该值时,触发 GC。单位为 KB。

参数:

  • value:用户期望的 GC 的水线值

示例

获取仓颉堆可以使用的最大值

获取仓颉堆可以使用的最大值。

代码如下:

from std import runtime.*
main() {
  println(MemoryInfo.maxHeapSize)
}

运行结果如下(以实际环境为准):

268435456

设置用户期望的 GC 的水线值

设置用户期望的 GC 的水线值为 2MB,代码如下:

from std import runtime.*
main() {
  SetGCThreshold(2048)
}