问题标签 [out-of-memory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio - Visual Studio 错误:“GenerateResource”任务意外失败
在构建包含 19 个项目的 VS 2008 解决方案时,我有时会得到:
通常发生在 VS 运行大约 4 小时后;让 VS 正确编译的唯一方法是关闭 VS,然后重新启动它。
我在一台有 3GB 内存的机器上。TaskManager 显示 devenv.exe 工作集为 578060K,机器的整个内存分配为 1.78GB。它应该有足够的内存来生成资源。
java - 如何处理“java.lang.OutOfMemoryError: Java heap space”错误?
我正在Java 5上编写客户端Swing应用程序(图形字体设计器)。最近,我遇到了错误,因为我对内存使用不保守。用户可以打开无限数量的文件,程序将打开的对象保存在内存中。经过快速研究,我发现5.0 Java 虚拟机中的人体工程学和其他人在 Windows 机器上说 JVM 默认最大堆大小为.java.lang.OutOfMemoryError: Java heap space
64MB
鉴于这种情况,我应该如何处理这种约束?
我可以使用java 的命令行选项来增加最大堆大小,但这需要找出可用的 RAM 并编写一些启动程序或脚本。此外,增加到某个有限的最大值并不能最终解决这个问题。
我可以重写我的一些代码以频繁地将对象持久保存到文件系统(使用数据库是同一件事)以释放内存。它可以工作,但它可能也有很多工作。
如果您能指出上述想法的细节或一些替代方案,如自动虚拟内存、动态扩展堆大小,那就太好了。
exception - 处理“java.lang.OutOfMemoryError: PermGen space”错误
最近我在我的 Web 应用程序中遇到了这个错误:
java.lang.OutOfMemoryError: PermGen 空间
它是运行在 Tomcat 6 和 JDK 1.6 上的典型 Hibernate/JPA + IceFaces/JSF 应用程序。显然,这可能会在重新部署应用程序几次后发生。
是什么原因造成的,可以做些什么来避免它?我该如何解决这个问题?
java - 如何在 Java 中查看堆中的内容?
我已经设法在我正在开发的 java 应用程序中获得内存“泄漏”。运行我的 JUnit 测试套件时,我随机出现内存不足异常 (java.lang.OutOfMemoryError)。
我可以使用什么工具来检查我的 java 应用程序的堆,以查看我的所有堆都用完了什么,这样我就可以弄清楚是什么保留了对应该能够被垃圾收集的对象的引用。
sql - 如何处理大型 SQL SERVER 批量插入?
我希望在迁移项目中执行一系列查询。要生成的脚本由分析遗留数据库的工具生成,然后生成脚本以将每个旧实体映射到适当的新记录。这些脚本对于小型实体运行良好,但有些记录有数十万条记录,生成的脚本文件约为 80 MB。
运行这些脚本的最佳方式是什么?
提示中是否有一些处理较大脚本的 SQLCMD?
我还可以将脚本分解为更小的脚本,但我不想执行数百个脚本来执行迁移。
java - 从哪个 Linux 内核/libc 版本开始,Java Runtime.exec() 就内存而言是安全的?
在工作中,我们的目标平台之一是运行 Linux 的资源受限的小型服务器(内核 2.6.13,基于旧的 Fedora Core 的自定义发行版)。该应用程序是用 Java (Sun JDK 1.6_04) 编写的。Linux OOM 杀手配置为在内存使用量超过 160MB 时终止进程。即使在高负载期间,我们的应用程序也永远不会超过 120MB,并且与其他一些活动的本机进程一起,我们保持在 OOM 限制内。
然而,事实证明,Java Runtime.getRuntime().exec() 方法,从 Java 执行外部进程的规范方法,在 Linux 上有一个特别不幸的实现,导致生成的子进程(暂时)需要相同数量的由于地址空间被复制,内存作为父进程。最终结果是,一旦我们执行 Runtime.getRuntime().exec(),我们的应用程序就会被 OOM 杀手杀死。
我们目前通过让一个单独的本机程序执行所有外部命令来解决这个问题,并通过套接字与该程序通信。这不是最佳的。
在网上发布这个问题后,我得到了一些反馈,表明这不应该发生在“较新”版本的 Linux 上,因为它们使用写时复制实现了 posix fork() 方法,大概意味着它只会复制它需要的页面在需要时修改而不是立即修改整个地址空间。
我的问题是:
- 这是真的?
- 这是内核、libc 实现还是其他地方的东西?
- 从哪个版本的内核/libc/fork() 可用的写时复制?
java - 什么是 StackOverflowError?
什么是 a StackOverflowError
,是什么原因造成的,我应该如何处理它们?
java - 为什么将 50,000 个对象插入 HashMap 时出现 OutOfMemoryError?
我正在尝试将大约 50,000 个对象(因此 50,000 个键)插入到java.util.HashMap<java.awt.Point, Segment>
. 但是,我不断收到 OutOfMemory 异常。(Segment
是我自己的课-重量很轻-一个String
字段和3个int
字段)。
这似乎很荒谬,因为我看到机器上有大量可用内存——在可用 RAM 和用于虚拟内存的 HD 空间中。
Java 是否可能在一些严格的内存要求下运行?我可以增加这些吗?
有一些奇怪的限制HashMap
吗?我将不得不实施我自己的吗?还有其他值得关注的课程吗?
(我在具有 2GB RAM 的 Intel 机器上在 OS X 10.5 下运行 Java 5。)
asp.net - GAC 会修复 ASP.NET/IIS6.0 System.OutOfMemoryException 吗?
我在同一应用程序池下的 IIS 6.0、Windows Server 2003 框中安装了许多应用程序实例。它们共享许多相同的程序集,并且不能加入到单个应用程序中。
我最近添加了一个新的应用程序实例,并在尝试加载 ASP.NET 2.0 应用程序时获得了 System.OutOfMemoryException。
使用 GAC 存储通用程序集会修复此错误,还是只能通过在不同应用程序池之间设置站点来解决此问题?
c# - 用于字符串连接的 StringBuilder 抛出 OutOfMemoryException
我们大多倾向于遵循上述最佳实践。
但即使有足够的可用内存, StringBuilder 也可能抛出OutOfMemoryException 。它会抛出 OOM 异常,因为它需要“连续的内存块”。
一些链接供参考 StringBuilder OutOfMemoryException
还有更多......
你们中有多少人面临或意识到这个问题,你做了什么来解决它?
有什么我想念的吗?
PS:我没有意识到这一点。
我已经改写了这个问题。
*** 同样的事情也适用于手动连接(我将验证这一点并更新 SO)。引起我担心的另一件事是系统中有足够的内存。这就是我在这里提出这个问题以检查是否有人遇到这个问题或者代码有什么严重错误的原因。