[software development] 工作之余手搓了一个简单的桌面便签
Tofloor
poster avatar
天空之城Top
deepin
2025-07-10 23:31
Author

做这个工具的目的是我在工作中经常会有比较多的任务要做,非常影响我写代码,因此做了个简单的工具,功能非常简单,帮我记录待办事项。

📝 ToDo 桌面清单

一个轻量级的桌面待办事项记录工具,使用 Java Swing 构建界面,Spring Boot 管理 Bean,JPA 操作 SQLite 数据库,并使用 FlatLaf 提升 UI 风格。

🧰 技术栈

技术 用途
Java Swing GUI 界面开发
FlatLaf 美化界面主题(仿 IntelliJ UI)
Spring Boot 应用配置、Bean 管理
JPA / Hibernate ORM 映射数据库实体
SQLite 轻量级嵌入式数据库,用于数据持久化

📦 运行环境要求

  • JDK 21
  • SpringBoot 3.2.4
  • SQLite

🖼️ 截图预览

todo.png

Reply Favorite View the author
All Replies
2 / 2
To page
天空之城Top
deepin
2025-07-17 23:25
#21
richie696

我简单扫了一眼就已经发现了好几个问题:

  1. 你FrameNum可能会有计数器BUG;
  2. 当一个便签页的文本非常大的时候你通过一个content来保存大文本,不管你用JDK21的ZGC还是G1,你这个用来保存大文本的content变量所在的内存空间,一定是Humongous Ragion中,当标签页特别多的时候,你大概率会出现OOM的异常,你浪费内存的地方远不止文本处理,这就是为什么我说你应该使用享元模式来处理文本编辑的原因;
  3. WindowsManager当中的openFrames不应该用ArrayList,多线程下会有并发问题,可以考虑使用CopyOnWriteArrayList,或者给该变量的访问加锁
  4. 在窗口销毁的时候没有移除掉对应的监听器,这可能造成内存泄露
  5. 当开启多窗口的时候你的内存使用会呈现线性增长,开的越多内存占用越大,虽然JVM会给你分配一个内存占用上限,但是也会导致频繁的FullGC,JDK21的ZGC进行内存性能回收的STW提升目的只是想要给用户更好的体验,而不是让我们来浪费内存的
  6. 你的在打包的时候应该没配置分代ZGC,21中分代ZGC默认是未启用的。

目前我已经在帮你着手修改代码了,后面我会提交一个commit上去。

大佬太棒啦,最近工作比较忙,有段时间没优化了,后面我会多多向大佬学习的 agree agree

Reply View the author
2 / 2
To page