C - Свободная память linux встроенного ядра постепенно уменьшается, хотя и включает json_dcref - PullRequest
0 голосов
/ 17 июня 2020

У меня есть встроенное устройство, которое называется Impinj RFID Reader, и оно содержит встроенное ядро ​​linux.

Перед запуском процесса ниже, т. Е. Конструированием объекта JSON с помощью json_object_set_new () и отправкой того же json через функцию MQTT и уничтожением объекта JSON с помощью json_decref (json объект).

char* rfid_json_dict = NULL;

json_t *root = json_object();
json_object_set_new( root, "id", json_integer(id) );
json_object_set_new( root, "name", json_string(tag_id) );
json_object_set_new( root, "timestamp", json_string(timestamp) );
json_object_set_new( root, "info", json_string(info) );
json_object_set_new( root, "tid", json_string(tid) );
json_object_set_new( root, "readerMac", json_string(reader_mac) );

rfid_json_dict = json_dumps(root_main, 0); 

sendMQTT(rfid_json_dict);
json_decref(root);

Ниже показана свободная память в читателе impinj перед запуском процесса,

 > show system cpu
Status='0,Success'
TotalMemory='62304256'
FreeMemory='13520896'

После выполнения вышеуказанных процессов (т. Е. Создания объекта json и его отправки через MQTT и разрушение) примерно на 3 часа. Теперь свободная память в той же встроенной среде равна

> show system cpu
Status='0,Success'
TotalMemory='62304256'
FreeMemory='9538432'

, и через некоторое время свободная память исчерпывается, и процесс автоматически завершается. Как решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...