memory-monitor-sdk
Version:
A powerful JavaScript memory monitoring SDK for Web and mobile applications. Features real-time monitoring, data visualization, automatic reporting, and memory leak detection.
218 lines • 5.44 kB
TypeScript
interface MemoryInfo {
usedJSHeapSize: number;
totalJSHeapSize: number;
jsHeapSizeLimit: number;
}
declare class MemoryMonitor {
private static instance;
private memoryLogs;
private intervalId;
private lastMemoryMB;
private peakThresholdMB;
private appStartTime;
private currentPage;
private pageHistory;
private memoryPageLogs;
private SIMULATED_LIMIT_MB;
private displayElement;
private isDisplayVisible;
private shouldShowDisplay;
static getInstance(): MemoryMonitor;
/**
* 开始监控内存使用情况
* @param intervalMs 监控间隔(毫秒,默认2秒)
* @param simulatedLimitMB 模拟手机内存上限(默认 300MB)
* @param peakThresholdMB 峰值变化阈值(MB,默认20MB)
* @param showDisplay 是否显示DOM面板(开发环境默认true)
*/
startMonitoring(intervalMs?: number, simulatedLimitMB?: number, peakThresholdMB?: number, showDisplay?: boolean): void;
/**
* 设置当前页面
* @param pageName 页面名称
*/
setCurrentPage(pageName: string): void;
/**
* 获取应用运行时长(分钟)
*/
private getAppRuntimeMinutes;
/**
* 获取应用运行时长(秒)
*/
private getAppRuntimeSeconds;
/**
* 格式化运行时长显示
*/
private formatRuntime;
/**
* 获取当前页面信息
*/
private getCurrentPageInfo;
/**
* 获取指定时间点的页面信息
* @param timestamp 时间戳
*/
private getPageAtTime;
/**
* 停止监控
*/
stopMonitoring(): void;
/**
* 创建DOM显示元素
*/
private createDisplayElement;
/**
* 移除DOM显示元素
*/
private removeDisplayElement;
/**
* 添加拖拽功能(支持移动端触摸)
*/
private addDragFunctionality;
/**
* 更新DOM显示内容
*/
private updateDisplayContent;
/**
* 记录当前内存使用情况
*/
private logMemoryUsage;
/**
* 获取内存使用趋势
*/
getMemoryTrend(): {
trend: string;
message: string;
growth?: undefined;
} | {
trend: string;
message: string;
growth: string;
};
/**
* 生成内存报告
*/
generateReport(): {
currentMemory: MemoryInfo | null | undefined;
trend: {
trend: string;
message: string;
growth?: undefined;
} | {
trend: string;
message: string;
growth: string;
};
};
/**
* 生成详细报告(包含运行时长、页面信息、峰值变化等)
* @param level 报告级别:'warning' | 'danger'
*/
generateDetailedReport(level?: 'warning' | 'danger'): {
runtime: string;
currentPage: string;
currentMemory: MemoryInfo | null | undefined;
trend: {
trend: string;
message: string;
growth?: undefined;
} | {
trend: string;
message: string;
growth: string;
};
peakChanges: {
timestamp: number;
change: number;
memory: number;
runtimeFromStart: string;
page: string;
timeFromStart: string;
}[];
recentLogs: {
time: string;
runtime: string;
page: string;
used: string;
}[];
level: "danger" | "warning";
};
/**
* 保存数据到JSON文件
*/
saveDataToFile(): Promise<{
sessionId: string;
startTime: number;
endTime: number;
duration: string;
totalSamples: number;
peakChanges: {
timestamp: number;
change: number;
memory: number;
runtimeFromStart: string;
page: string;
timeFromStart: string;
}[];
trend: {
trend: string;
message: string;
growth?: undefined;
} | {
trend: string;
message: string;
growth: string;
};
data: {
timestamp: number;
time: string;
runtime: string;
page: string;
used: number;
total: number;
usage: number;
}[];
config: {
simulatedLimitMB: number;
peakThresholdMB: number;
};
} | null>;
/**
* 生成会话ID
*/
private generateSessionId;
/**
* 判断是否需要保存数据
* 只要有数据记录就保存
*/
shouldSaveData(): boolean;
/**
* 清理监控数据
*/
clearLogs(): void;
/**
* 手动显示DOM面板
*/
showDisplay(): void;
/**
* 手动隐藏DOM面板
*/
hideDisplay(): void;
/**
* 切换DOM面板显示状态
*/
toggleDisplayPanel(): void;
/**
* 获取峰值变化记录
*/
getPeakChanges(): {
timestamp: number;
change: number;
memory: number;
runtimeFromStart: string;
page: string;
timeFromStart: string;
}[];
}
export declare const memoryMonitor: MemoryMonitor;
export default memoryMonitor;
//# sourceMappingURL=memory-monitor.d.ts.map