Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Releases: Seryta/PacketScope

v1.1.0

17 May 16:09
@github-actions github-actions

Choose a tag to compare

[1.1.0] - 2026年05月17日

Added

  • True lazy Frame.data(v1.1 round0 LAZY-001~005):mmap 路径下
    Frame.data 改成 MmapBytes 视图((parent ByteBuffer, offset, length)),
    zero-copy 访问;FrameBytes sealed interface 同时保留 HeapBytes
    实现给 InputStream 路径 / PCAPdroid UDP listener 用,dissector
    signature 不动。同等 PCAP 加载后 heap 占用预期下降 ~50%——raw bytes
    不再压堆,仅元数据 (layers / fields / FilterIndex) 留在堆上
  • PcapHandle 显式 mmap 生命周期:PcapLoader.Result.Success
    handle,AppScreen 用 DisposableEffect(handle) 在 state 切换时显式
    触发 reader.tryExplicitUnmap()(reflection 调 MappedByteBuffer.cleaner),
    避免连续打开多个 PCAP 时 vmem 累积;reflection 失败时 fallback 到 GC
    • finalizer,跟 v0.9 之前一致不会更差
  • ByteReader FrameBytes 重载(u8 / u16Be / u32Be):pass 层
    (TcpReassembler / TcpSessionAnalyzer)直接吃 frame.data 读 2-4 字节,
    不需要 asByteArray() 整帧——lazy 收益的关键放大器
  • MemoryProfileTest (v1.1 round1 F-004 扩展):JVM 侧验证
    • mmap 路径 frame.data is MmapBytes(零拷贝视图)
    • InputStream 路径 frame.data is HeapBytes(对照路径行为不变)
    • mmap 加载 1.5 MB PCAP heap 增量 < 文件 50%
    • Pipeline.process 后 Frame.data 仍持 MmapBytes 视图(验 Pipeline
      内 asByteArray() 中间变量没意外泄漏进 Frame)
  • PcapHandleTest (v1.1 round0 LAZY-003):onClose 调一次 / 重复 close
    idempotent / 未 close 时不触发
  • QA_CHECKLIST §N.1 大文件 + lazy mmap heap 档案段:真机 adb shell dumpsys meminfo 流程 + Dalvik / Native Heap 期望档案 + 1 GB / 5 个
    PCAP 连开的验收点
  • ANDROID_PITFALLS §大文件 / mmap(3 条新 P-NN 入库):
    • P-20 单 MappedByteBuffer 上限 Int.MAX_VALUE (~2.1 GB),> 2 GB
      要多段 mmap
    • P-21 MappedByteBuffer 无标准 unmap API,reflection + GC 兜底
    • P-22 lazy mmap unmap 与背景线程读 frame.data 的 race(v1.1
      round1 F-001 已知风险点;任何未来加 LaunchedEffect 异步读 frame.data
      的 PR 必读)

Changed

  • 单次加载体积上限 500 MB → 1 GB(lazy refactor 让 raw bytes 不再
    占 heap;2 GB 需要多段 mmap,留 v2.0)
  • README + README.zh-CN Roadmap 表:v1.0 ✅(公开仓库收尾)+ v1.1 ✅
    (lazy + 1 GB)+ v2.0 ⏭️(多段 mmap + metadata streaming)

Fixed

  • PcapHandle.close()AtomicBoolean.compareAndSet 替原 @Volatile +
    check-then-set,保证 onClose 严格 exactly-once(v1.1 round1 F-002)
  • FrameFilter.Text 支持 UTF-8 中文 payload:pattern 与 frame.data 走
    同一字节级表示(pattern.toByteArray(UTF-8) → ISO_8859_1 decode)
  • 「关于」屏拦截系统手势返回 → onBack(与其它内嵌屏一致)
  • 过滤语法 HelpItem 点击替换 query 后光标自动跳到末尾(用 TextFieldValue
    overload 显式控 selection)
  • 过滤输入框(FilterBar + FilterHelpDialog)加 X 清除按钮(query 非空才显示)
  • FilterHelpDialog IME action = Search,回车直接 dismiss 返回列表
Assets 4
Loading

AltStyle によって変換されたページ (->オリジナル) /