From 232227035c8d6a31eaaf193863cbadda949c08fd Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期二, 20 七月 2021 20:19:26 +0800
Subject: [PATCH] fix memory leak
---
box/status_main.cc | 23 +++++++++++++++++------
1 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/box/status_main.cc b/box/status_main.cc
index 993fbee..159e623 100644
--- a/box/status_main.cc
+++ b/box/status_main.cc
@@ -31,8 +31,19 @@
int status_main(int argc, char const *argv[])
{
- auto &shm = BHomeShm();
+ AppArg args(argc, argv);
+ auto shm_name = args.Get("shm", BHomeShm().name());
+ auto shm_size = std::atol(args.Get("size", "").c_str());
+ if (shm_size <= 0 || shm_size > 512) {
+ shm_size = 50;
+ }
+ auto DisplayName = [&]() -> std::string {
+ return shm_name;
+ };
+ SharedMemory shm(shm_name, 1024 * 1024 * shm_size);
+ shm_size = shm.get_size() / 1024 / 1024;
+ printf("monitoring shm : %s, size : %ldM\n", DisplayName().c_str(), shm_size);
std::atomic<bool> run(true);
auto Now = []() { return steady_clock::now(); };
@@ -41,7 +52,7 @@
auto showStatus = [&]() {
auto next = Now();
const uint64_t start = ToMs(next);
- auto last = 0;
+ auto last = 0ul;
while (run) {
std::this_thread::sleep_until(next);
auto passed = ToMs(next) - start;
@@ -62,19 +73,19 @@
int nkb = left / Kb;
int nb = left - nkb * Kb;
char buf[64] = {0};
- int n = sprintf(buf, " %4dMb %4dKb %4dB", nmb, nkb, nb);
- int start = (nmb > 0) ? 0 : ((nkb > 0) ? 7 : 14);
+ int n = sprintf(buf, " %4dM%4dK%4dB", nmb, nkb, nb);
+ int start = (nmb > 0) ? 0 : ((nkb > 0) ? 5 : 10);
buf[start] = sign;
return std::string(buf + start);
};
char buf[200] = "\n";
auto Print = [&](bool new_line) {
- int n = sprintf(buf, "\r%6ds avail : %12ld = %s %6ds", sec, cur, Pretty(cur).c_str() + 1, sec);
+ int n = sprintf(buf, "\r%6lds avail : %12ld = %s %6lds", sec, cur, Pretty(cur).c_str() + 1, sec);
printf("%s", buf);
if (new_line) {
auto diff = cur - last;
- printf(" (%+ld = %s)\n", diff, Pretty(diff).c_str());
+ printf(" (%+6ld = %s)\n", diff, Pretty(diff).c_str());
printf("%s", buf);
}
fflush(stdout);
--
Gitblit v1.8.0