克服 Windows 用户对象句柄限制

2024-03-27

我正在寻找在构建重量级 Windows 界面时处理用户对象句柄限制的高级策略。请解释您如何使用 SWT 或直接 Windows GUI API 克服或绕过此问题。我唯一不感兴趣的是优化小部件使用的策略,因为我已经广泛地这样做了,但它并没有解决问题,只会降低问题的可能性。

我的情况:
我有一个基于 SWT 的 GUI,它允许在同一个父 shell 中进行多个会话,并且在每个会话中,它们有 3 个独立的位置,其中显示用户生成的注释列表。当用户打开多个会话并提取填充这些列表的数据时,用户对象句柄的数量可能会根据评论的数量急剧增加。

我目前的解决方案:
1.我默认对评论进行分页,从而限制每个会话中的评论行数,但由于管理需求,我还有一个有效的“查看全部”按钮,它完全绕过了这一点。
2.我自定义绘制每行中的所有不可编辑信息。这意味着每行仅使用 2 个对象句柄。
3. 我创建了 JNI 调用,用于查询操作系统的当前使用情况和最大使用情况。这样我就可以向用户发出崩溃即将发生的指示。不用说,他们忽略了这个警告。


首先,您确定问题不是桌面堆与句柄数吗?每个句柄都会消耗一定量的 Windows 桌面堆。一个 USER 句柄可能会占用大量空间,有些则占用很少。我建议这样做是为了确保您不会在真正有其他事情时追逐用户句柄计数。 (谷歌搜索微软的 dheapmon 工具,可能会有帮助)

我读到您可以通过更改注册表中的键来更改句柄的最大值:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ 当前版本\Windows\USERProcessHandleQuota and GDI进程句柄配额

对于用户来说,这可能是一个短期修复。

我会通过首先弄清楚每个项目需要维护哪些 2 个用户句柄来解决这个问题(例如列表框中的每个项目需要维护 2 个用户句柄?)。这似乎很可疑。用户句柄 http://msdn.microsoft.com/en-us/library/ms725486.aspx仅适用于少数顶级 Windows UI 对象(Windows、菜单、光标、窗口位置、icons, ETC...)。我不明白为什么你的小部件需要为每个项目保留 2 个对象(它是一个图标句柄吗??)。

如果你想把整个事情拆开——这听起来像是一个人的工作虚拟模式列表视图 http://msdn.microsoft.com/en-us/library/bb774735(VS.85).aspx(LVS_OWNERDATA)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

克服 Windows 用户对象句柄限制 的相关文章

  • Mac SQLite 编辑器[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我知道可可MySQL http cocoamysql sourceforge net 但我还没有见过 SQLite 的 Mac GUI 有
  • PyGTK:带线程的 gobject.idle_add() 和 timeout_add()

    是否有任何明确的文档说明idle add timeout add 和 或它们安装的实际回调是否需要锁 任何类型 def work args 1 gtk gdk threads enter needed self ui change some
  • 获取正在运行的程序的属性

    我想开发一个程序 其 ID 是一张牌 因为它在另一个正在运行的程序 例如扑克或红心游戏或其他程序 中播放 我首先尝试获取有关已运行的游戏程序的所需信息 但我从一开始就遇到了问题 我正在运行 MSVC 2013 并开发 MFC 应用程序 现在
  • 自动化 Windows UI 测试方法

    我们正在寻求设置自动化 UI 测试 并想知道最好的方法是什么 潜在的陷阱是什么 设置费用是否昂贵 提前致谢 B 自动化测试最大的消耗可能是时间 有很多非常昂贵的工具 但也有免费的工具 即使是昂贵的工具的成本也不太可能与正确设置自动化测试所需
  • 如何以编程方式重新启动 Windows 资源管理器进程

    我正在开发 Windows shell 扩展 不幸的是 在更改 DLL 时 我必须重新启动 Windows 资源管理器 因为它将 DLL 保留在内存中 我从 Dino Esposito 找到了这个程序 但它对我不起作用 void SHShe
  • 如何使用VerQueryValue?

    我有一个 exe 需要从特定 dll 检索版本信息 例如 FileDescription 我的代码已经调用了 GetFileVersionInfoSize 和 GetFileVersionInfo 但我不知道如何应用 VerQueryVal
  • 创建一个覆盖视图以覆盖整个活动,包括协调器布局中的工具栏

    我想创建一种覆盖类型的布局 以显示在包括工具栏在内的活动上方 我无法使用任何库来执行此操作 因为我编写的所有内容都是自定义的 我可以通过使用以下代码直接将视图添加到装饰视图来实现它 ViewGroup vg ViewGroup getWin
  • 对 MFC UI 应用程序进行单元测试吗?

    如何对大型 MFC UI 应用程序进行单元测试 我们有一些大型 MFC 应用程序已经开发了很多年 我们使用一些标准的自动化 QA 工具来运行基本脚本来检查基础知识 文件打开等 这些由 QA 小组在日常构建后运行 但我们希望引入一些程序 以便
  • Windows 10 关闭、最小化和最大化按钮

    要绘制主题按钮 我使用以下代码 var h HTHEME begin if UseThemes then begin SetWindowTheme Handle explorer nil h OpenThemeData Handle WIN
  • 如何允许用户对列表中的项目重新排序?

    我有一个 Android 应用程序 用户可以在其中将项目添加到列表中 并且我希望他们能够按照自己的意愿对列表中的项目进行重新排序 而不是仅仅向他们提供不同的排序顺序 为项目添加位置设置 它们来自数据库 很容易 但是用户可以使用哪种 UI 元
  • 如何在没有io的情况下在windows上创建特定大小的文件?

    Windows 上是否有与 posix fallocate 等效的函数 具体来说 我正在寻找一种方法来立即 无需执行大量 IO 创建特定大小的文件 我不关心内容 我尝试过 chsize s 它确实分配了文件 但需要很长时间 如果我右键单击文
  • 原生状态栏

    有没有办法创建nativeSWT 中的状态栏与 Windows 应用程序中的状态栏类似 我见过使用标签模拟的状态栏 但我对真正的解决方案更感兴趣 org eclipse jface action StatusLineManager crea
  • :: 右侧的非法标记

    我有以下模板声明 template
  • 使用 JScrollPane 和 JLayeredPane 进行 Swing GUI 设计

    我想要一个如下图所示的 GUI 设置 The JLayeredPane应始终具有相同的大小 但是JPanel和JScrollPane可以改变尺寸 我需要JScrollPane能够显示JLayedPane通过单击箭头 如果JPanel and
  • 链接到大地址感知 DLL

    假设我有一个使用 LARGEADDRESSAWARE 链接器标志集构建的 DLL 现在我有一个动态链接到该 DLL 的应用程序 这是否会使我的应用程序具有大型地址意识 如果不是 那么为任何 DLL 设置此标志是否有意义 讨论here htt
  • 向 Windows 服务发送 Windows 消息

    有没有任何工具可以将 WM ENDSESSION 等 Windows 消息发送 模仿 到 Windows 服务 OR 如何使用 C 向进程发送 Windows 消息 我只懂C 编辑 目的 基本上我必须调试 Windows 服务来修复仅在系统
  • JavaFX TextField cancelEdit 未按预期工作

    I have a TextField https docs oracle com javase 8 javafx api javafx scene control TextField html and I would like the co
  • win32 内容已更改,但除非移动窗口,否则不会显示更新

    我的 win32 GUI 内容每秒都会更改 但除非手动移动窗口 否则不会显示更新 我尝试每秒弹出一个消息框来触发窗口刷新 它成功了 因此 这证明我的内容确实发生了变化 但窗口没有更新 我希望刷新窗口而不是每次都弹出消息框 有没有这样的窗口功
  • Qt GUI 编程设计

    我正在尝试创建一个 GUI 应用程序 主窗口 一个QMainWindow 包含 9 个固定大小的标签以及主窗口的大小 我尝试在没有 Qt GUI Designer 的情况下以编程方式制作它 该项目构建时没有错误 但我看不到主窗口上显示的任何
  • 在 GTK+ (gtkD) 中处理按键

    我正在玩gtkD http www dsource org projects gtkd GTK 的 D 绑定 我有一个window对象 实例gtk MainWindow 我想处理它的按键 How 如何处理特殊键 例如箭头键 pgup pgd

随机推荐

  • 如何在mininet中将不同的交换机连接到不同的遥控器?

    我想将 mininet 虚拟网络的不同交换机连接到不同的远程控制器 但不知道如何继续 请提供任何方法来做到这一点 任何 python 示例都值得赞赏 我推荐你阅读此邮件形式为 mininet 的邮件列表档案 https mailman st
  • 单实例登录实现

    我在我的项目 在 ASP NET 2 0 中构建的 Web 应用程序 中遇到了一个严重的问题 如下所述 假设我已经给出了用户 ID singh nirajan 并且用户说 User1 使用该用户 ID 登录到系统 现在我的要求是每当其他用户
  • javascript 将 int 转换为 float

    我有一个变量 var fval 4 现在我想输出为 4 00 JavaScript 只有一个Number存储浮点值的类型 没有 int Edit 如果要将数字格式化为小数点后两位数字的字符串 请使用 4 toFixed 2
  • 如何使用 Jackson 将字符串反序列化为自定义对象?

    我有一个想要解析的 JSON name john 我必须使用以下层次结构 这些类是不可变的 我必须通过静态工厂方法访问它们 这是必要的 因此建议对其中任何一个进行修改都是没有意义的Name or Person class Name stat
  • 如何添加 CSS3 过渡并显示 HTML5 详细信息/摘要标签?

    仅使用CSS3 有没有一种方法可以在页面上添加漂亮的淡入和从左滑动过渡效果DETAILS SUMMARY reveal 有关此新标签的演示 请参阅此演示 details transition height 3s ease in
  • c3p0如何关闭所有数据库连接并在需要时重新打开它们?

    我有一个 TimerTask 每天运行一次 大约 1 或 2 小时 每次运行时 它都会创建数百个线程来为 MySQL 数据库中的每个表执行一些计算工作 我使用c3p0作为数据库源连接池 每个线程在计算前获取连接 计算后关闭连接 我设置连接池
  • iOS 8 - 视频和声音文件无法从主屏幕 Web 应用程序播放

    我有一个 HTML5 Web 应用程序 它使用 JWPlayer 来嵌入视频和播客 这在 iOS 7 中运行良好 无论是在 Safari 中还是作为 Web 应用程序保存到主屏幕时 在 iOS 8 中 视频和声音文件也可以在 Safari
  • 使用 sed 为选项卡添加背景颜色?

    是否可以使用 sed 更改选项卡 或任何其他文本 的背景颜色 以便 例如 我可以运行如下所示的内容 somefunction sed e s some pattern set bg color 1 unset bg color g Yes
  • QNetworkAccessManager和HTTP持久连接

    HTTP 1 1 默认支持持久连接 因此我想使用发出第一个 HTTP 请求时设置的相同连接来发送第二个 http 请求 如何通过Qt来实现这一点 如果我只是在第一个请求完成后发出第二个请求 如下所示 manager gt get QNetw
  • 当维度在类实例化时未定义时,如何将浮点数组声明为 Objective-C 中的类变量?

    在 Java 中 它看起来像这样 class Foo float array Foo instance new Foo instance array new float 10 你可以只使用一个指针 float array Allocate
  • 列出Innodb全文索引的单词

    在 Mysql Innodb 中 我创建了一个全文索引 是否有一个查询可以用来检索全文索引中包含的所有单词的列表 我的想法是使用一个文本字段来保存标签列表的 json 转储 我可以使用全文查询来检索与标签匹配的行 它有效 剩下的问题是检索索
  • ctypes 结构中的默认值

    在 ctypes 结构中 是否可以指定默认值 例如 使用常规 python 函数 您可以执行以下操作 def func a b 2 print a b 这将允许这种行为 func 1 prints 3 func 1 20 prints 21
  • 从传统的基于 XUL 的附加组件中访问附加 SDK?

    我有一个大型且复杂的基于 XUL 的插件 我需要使用插件 SDK 中的一些函数 这可能吗 如果是这样 是否有人有工作示例代码 最好使用 page worker 模块 以下是 devtools 的做法 但某些模块会阻塞 明显的候选者是self
  • 无法访问viewBinding

    我现在正在 Kotlin 中使用 viewBinding here is my build gradle 启用 ViewBinding 并具有自动导入 ViewBinding 依赖项 but Android Studio still sho
  • 如何更好地组织数据库以适应用户状态的变化

    我关注的用户可以是 未确认 或 已确认 后者意味着他们获得完全访问权限 而前者意味着他们正在等待主持人的批准 我不确定如何设计数据库来解释这种结构 我的一个想法是拥有两个不同的表 confirmedUser 和 unconfirmedUse
  • 获取parent.location.url - iframe - 从子级到父级

    我得到了一个在 iframe 中显示的页面 我需要从该页面 子页面 获取带有js的parent location url 两个站点位于不同的域中 我想 警报 父 位置 url 但我收到这个错误 权限被拒绝http 父域 http paren
  • 通过 ASP.NET Identity 和 Autofac OWIN 集成进行授权

    在这个问题的底部添加了更新 我有一个 Web 应用程序 它使用 MVC5 和 WebAPI2 以及 Autofac for DI 该应用程序使用 ASP NET Identity 和 oAuth 不记名令牌 尽管后者可能不是重点 这一切都运
  • C#:存储百分比,50 还是 0.50?

    当在变量中保存百分比值时 会优先将它们保存为整数还是分数 也就是说 变量应该保存 0 到 100 之间的数字还是 0 00 到 1 00 之间的数字 在任何一种情况下 保存值的变量都是十进制类型 我正在交互的数据库恰好将它们存储为 0 到
  • Ionic 项目中的 GSAP

    如何将 GSAP 库导入到 Ionic 项目中 只是使用npm 安装 gsap当我通过导入时不起作用 import TweenMax TimelineMax from gsap 我使用打字稿 谢谢 你不需要打字 我在几个项目中使用过它 所有
  • 克服 Windows 用户对象句柄限制

    我正在寻找在构建重量级 Windows 界面时处理用户对象句柄限制的高级策略 请解释您如何使用 SWT 或直接 Windows GUI API 克服或绕过此问题 我唯一不感兴趣的是优化小部件使用的策略 因为我已经广泛地这样做了 但它并没有解