mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-27 00:20:19 +08:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
975ff6dc40
@ -355,6 +355,54 @@ public object BuiltInCommands {
|
|||||||
ConsoleCommandOwner, "status", "states", "状态",
|
ConsoleCommandOwner, "status", "states", "状态",
|
||||||
description = "获取 Mirai Console 运行状态"
|
description = "获取 Mirai Console 运行状态"
|
||||||
), BuiltInCommandInternal {
|
), BuiltInCommandInternal {
|
||||||
|
|
||||||
|
internal interface MemoryUsageGet {
|
||||||
|
val heapMemoryUsage: MUsage
|
||||||
|
val nonHeapMemoryUsage: MUsage
|
||||||
|
val objectPendingFinalizationCount:Int
|
||||||
|
}
|
||||||
|
internal val memoryUsageGet: MemoryUsageGet = kotlin.runCatching {
|
||||||
|
ByMemoryMXBean
|
||||||
|
}.getOrElse { ByRuntime }
|
||||||
|
|
||||||
|
internal object ByMemoryMXBean : MemoryUsageGet {
|
||||||
|
val memoryMXBean = ManagementFactory.getMemoryMXBean()
|
||||||
|
val MemoryUsage.m: MUsage
|
||||||
|
get() = MUsage(
|
||||||
|
committed, init, used, max
|
||||||
|
)
|
||||||
|
override val heapMemoryUsage: MUsage
|
||||||
|
get() = memoryMXBean.heapMemoryUsage.m
|
||||||
|
override val nonHeapMemoryUsage: MUsage
|
||||||
|
get() = memoryMXBean.nonHeapMemoryUsage.m
|
||||||
|
override val objectPendingFinalizationCount: Int
|
||||||
|
get() = memoryMXBean.objectPendingFinalizationCount
|
||||||
|
}
|
||||||
|
|
||||||
|
internal object ByRuntime : MemoryUsageGet {
|
||||||
|
override val heapMemoryUsage: MUsage
|
||||||
|
get() {
|
||||||
|
val runtime = Runtime.getRuntime()
|
||||||
|
return MUsage(
|
||||||
|
committed = 0,
|
||||||
|
init = 0,
|
||||||
|
used = runtime.maxMemory() - runtime.freeMemory(),
|
||||||
|
max = runtime.maxMemory()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
override val nonHeapMemoryUsage: MUsage
|
||||||
|
get() = MUsage(-1, -1, -1, -1)
|
||||||
|
override val objectPendingFinalizationCount: Int
|
||||||
|
get() = -1
|
||||||
|
}
|
||||||
|
|
||||||
|
internal data class MUsage(
|
||||||
|
val committed: Long,
|
||||||
|
val init: Long,
|
||||||
|
val used: Long,
|
||||||
|
val max: Long,
|
||||||
|
)
|
||||||
|
|
||||||
@Handler
|
@Handler
|
||||||
public suspend fun CommandSender.handle() {
|
public suspend fun CommandSender.handle() {
|
||||||
sendAnsiMessage {
|
sendAnsiMessage {
|
||||||
@ -393,16 +441,14 @@ public object BuiltInCommands {
|
|||||||
}
|
}
|
||||||
reset().append("\n\n")
|
reset().append("\n\n")
|
||||||
|
|
||||||
val memoryMXBean = ManagementFactory.getMemoryMXBean()
|
|
||||||
|
|
||||||
append("Object Pending Finalization Count: ")
|
append("Object Pending Finalization Count: ")
|
||||||
.emeraldGreen()
|
.emeraldGreen()
|
||||||
.append(memoryMXBean.objectPendingFinalizationCount)
|
.append(memoryUsageGet.objectPendingFinalizationCount)
|
||||||
.reset()
|
.reset()
|
||||||
.append("\n")
|
.append("\n")
|
||||||
val l1 = arrayOf("committed", "init", "used", "max")
|
val l1 = arrayOf("committed", "init", "used", "max")
|
||||||
val l2 = renderMemoryUsage(memoryMXBean.heapMemoryUsage)
|
val l2 = renderMemoryUsage(memoryUsageGet.heapMemoryUsage)
|
||||||
val l3 = renderMemoryUsage(memoryMXBean.nonHeapMemoryUsage)
|
val l3 = renderMemoryUsage(memoryUsageGet.nonHeapMemoryUsage)
|
||||||
val lmax = calculateMax(l1, l2.first, l3.first)
|
val lmax = calculateMax(l1, l2.first, l3.first)
|
||||||
|
|
||||||
append(" ")
|
append(" ")
|
||||||
@ -451,7 +497,6 @@ public object BuiltInCommands {
|
|||||||
rendMU(l2)
|
rendMU(l2)
|
||||||
append("\nNon-Heap Memory: ")
|
append("\nNon-Heap Memory: ")
|
||||||
rendMU(l3)
|
rendMU(l3)
|
||||||
renderMemoryUsage(memoryMXBean.nonHeapMemoryUsage)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -484,7 +529,7 @@ public object BuiltInCommands {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun AnsiMessageBuilder.renderMemoryUsage(usage: MemoryUsage) = arrayOf(
|
private fun AnsiMessageBuilder.renderMemoryUsage(usage: MUsage) = arrayOf(
|
||||||
renderMemoryUsageNumber(usage.committed),
|
renderMemoryUsageNumber(usage.committed),
|
||||||
renderMemoryUsageNumber(usage.init),
|
renderMemoryUsageNumber(usage.init),
|
||||||
renderMemoryUsageNumber(usage.used),
|
renderMemoryUsageNumber(usage.used),
|
||||||
|
@ -26,7 +26,7 @@ Mirai Console 可以独立启动,也可以被嵌入到某个应用中。
|
|||||||
|
|
||||||
#### 从 JCenter 下载模块
|
#### 从 JCenter 下载模块
|
||||||
|
|
||||||
mirai 在版本发布时会将发布的构建存放与 [mirai-bintray-repo]。
|
mirai 在版本发布时会将发布的构建存放于 [mirai-bintray-repo]。
|
||||||
|
|
||||||
- mirai-core 会提供 [mirai-core-all]
|
- mirai-core 会提供 [mirai-core-all]
|
||||||
- mirai-console 与其各个模块都会提供 `-all` 的 Shadowed 构建
|
- mirai-console 与其各个模块都会提供 `-all` 的 Shadowed 构建
|
||||||
@ -141,4 +141,4 @@ PluginManager.INSTANCE.loadPlugin(Plugin)
|
|||||||
PluginManager.INSTANCE.enablePlugin(Plugin)
|
PluginManager.INSTANCE.enablePlugin(Plugin)
|
||||||
```
|
```
|
||||||
|
|
||||||
但注意:这种方法目前是实验性的——一些特定的功能如注册扩展可能不会正常工作。
|
但注意:这种方法目前是实验性的——一些特定的功能如注册扩展可能不会正常工作。
|
||||||
|
Loading…
Reference in New Issue
Block a user