UNPKG

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
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