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)
}