Release v0.6.35: reduce resident memory and compact shared dictionaries
This commit is contained in:
+17
-2
@@ -604,10 +604,25 @@ std::recursive_mutex logGate;
|
||||
bool loggingEnabled = false;
|
||||
DiagnosticBuffer diagnosticBuffer;
|
||||
}
|
||||
size_t DiagnosticBuffer::expire(ULONGLONG now)
|
||||
{
|
||||
size_t removed = 0;
|
||||
while (!entries.empty() && now - entries.front().first > 30000)
|
||||
{
|
||||
entries.pop_front();
|
||||
++removed;
|
||||
}
|
||||
return removed;
|
||||
}
|
||||
void expireDiagnostics(ULONGLONG now)
|
||||
{
|
||||
std::lock_guard lock(logGate);
|
||||
diagnosticBuffer.expire(now);
|
||||
}
|
||||
std::wstring DiagnosticBuffer::record(const std::wstring &message, bool problem, ULONGLONG now)
|
||||
{
|
||||
while (!entries.empty() && (entries.size() >= 128 || now - entries.front().first > 30000))
|
||||
entries.pop_front();
|
||||
expire(now);
|
||||
while (entries.size() >= 128) entries.pop_front();
|
||||
entries.emplace_back(now, message);
|
||||
if (!problem)
|
||||
return {};
|
||||
|
||||
Reference in New Issue
Block a user