* Copyright (c) 2025 Huawei Technologies Co.,Ltd.
*
* MindStudio is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
* ------------------------------------------------------------------------- */
#ifndef OOM_HANDLER_H
#define OOM_HANDLER_H
#include <mutex>
#include <queue>
#include "record_info.h"
namespace MemScope {
* OOMHandler类主要功能:
* 1. 管理OOM调用栈的存储和获取
* 2. 提供线程安全的接口,确保OOM调用栈的正确传递
*/
class OOMHandler {
public:
static OOMHandler& Instance();
void SetOOMStack(const CallStackString& stack);
CallStackString GetOOMStack();
private:
OOMHandler() = default;
~OOMHandler() = default;
OOMHandler(const OOMHandler&) = delete;
OOMHandler& operator=(const OOMHandler&) = delete;
OOMHandler(OOMHandler&&) = delete;
OOMHandler& operator=(OOMHandler&&) = delete;
std::mutex oomStackMutex_;
std::queue<CallStackString> oomStackQueue_;
};
}
#endif