修复内存溢出问题

This commit is contained in:
2025-09-19 01:25:30 +08:00
parent 803cc100be
commit 9674740c0d
13 changed files with 1085 additions and 337 deletions

79
debug/test_cleanup.js Normal file
View File

@@ -0,0 +1,79 @@
// 测试清理功能的脚本
async function testCleanup() {
try {
// 打开数据库
const request = indexedDB.open('NanoBananaDB', 1);
request.onsuccess = function(event) {
const db = event.target.result;
// 读取生成记录
const transaction = db.transaction(['generations'], 'readonly');
const store = transaction.objectStore('generations');
const getAllRequest = store.getAll();
getAllRequest.onsuccess = function(event) {
const generations = event.target.result;
console.log('生成记录数量:', generations.length);
// 检查是否有base64数据
let base64Count = 0;
for (const generation of generations) {
for (const asset of generation.sourceAssets || []) {
if (asset.url && asset.url.startsWith('data:')) {
console.log('发现base64源资产:', asset.url.substring(0, 50) + '...');
base64Count++;
}
}
for (const asset of generation.outputAssets || []) {
if (asset.url && asset.url.startsWith('data:')) {
console.log('发现base64输出资产:', asset.url.substring(0, 50) + '...');
base64Count++;
}
}
}
console.log('总共发现base64资产数量:', base64Count);
// 读取编辑记录
const editTransaction = db.transaction(['edits'], 'readonly');
const editStore = editTransaction.objectStore('edits');
const getAllEditsRequest = editStore.getAll();
getAllEditsRequest.onsuccess = function(event) {
const edits = event.target.result;
console.log('编辑记录数量:', edits.length);
// 检查是否有base64数据
let editBase64Count = 0;
for (const edit of edits) {
if (edit.maskReferenceAsset && edit.maskReferenceAsset.url && edit.maskReferenceAsset.url.startsWith('data:')) {
console.log('发现base64遮罩参考资产:', edit.maskReferenceAsset.url.substring(0, 50) + '...');
editBase64Count++;
}
for (const asset of edit.outputAssets || []) {
if (asset.url && asset.url.startsWith('data:')) {
console.log('发现base64编辑输出资产:', asset.url.substring(0, 50) + '...');
editBase64Count++;
}
}
}
console.log('编辑记录中总共发现base64资产数量:', editBase64Count);
console.log('清理前总共base64资产数量:', base64Count + editBase64Count);
db.close();
};
};
};
request.onerror = function(event) {
console.error('打开数据库失败:', event.target.error);
};
} catch (error) {
console.error('测试过程中出错:', error);
}
}
// 运行测试
testCleanup();