heap-memory相关内容

Go 中结构的堆栈与堆分配,以及它们与垃圾收集的关系

我是 Go 的新手,我在 C 风格的基于堆栈的编程和 Python 风格的基于堆栈的编程之间遇到了一些认知失调,其中自动变量存在于堆栈中,分配的内存存在于堆中唯一存在于堆栈中的是指向堆上对象的引用/指针. 据我所知,以下两个函数给出了相同的输出: func myFunction() (*MyStructType, error) {var chunk *MyStructType = new( ..
发布时间:2021-12-11 22:52:22 其他开发

增加 Scala 的 JVM 堆大小?

我有一个 Scala 数据处理工具,它因 java.lang.OutOfMemoryError 异常而失败.该工具需要对一个大数据文件(我正在处理的文件超过 700MB)进行几次传递,因此如果可以将整个文件存储在内存中会很方便. 我从命令行或使用“scala"运行程序从 Bash 脚本运行该工具.如何为此增加 JVM 堆大小?我试过传递 -Xmx1024m,但它不能识别这个参数.我正在使用 ..
发布时间:2021-12-07 13:02:35 其他开发

如何在 Docker 容器内设置 Java 堆大小(Xms/Xmx)?

在提出这个问题时,Docker 看起来足够新,无法在网络上回答这个问题.我找到的唯一地方是这篇文章作者说这很难,仅此而已. 解决方案 我同意这取决于您使用的容器.如果你使用的是官方的Tomcat镜像,看起来很简单,你会需要使用堆设置传递 JAVA_OPTS 环境变量: docker run --rm -e JAVA_OPTS='-Xmx1g' tomcat 参见如何设置JVM参数? ..
发布时间:2021-12-07 12:21:01 Java开发

使用嵌入式 Tomcat 启动 Spring Boot 应用程序时,如何配置堆大小?

我正在尝试将 Spring Boot 支持的 Web 应用程序部署到生产环境中.该应用程序使用 Spring Boot 1.0.1 构建,并嵌入了默认的 Tomcat 7 作为应用程序服务器.使用 java -jar myapp.jar 命令行启动应用程序时,我想为应用程序分配更大的内存. 我应该使用 JVM 参数,例如 -Xms -Xmx或使用环境变量,例如JAVA_OPTS?我试图在文档 ..
发布时间:2021-12-06 17:24:19 其他开发

增加 Eclipse 的 JVM 最大堆大小

我正在尝试增加 Eclipse 的最大堆大小.我曾尝试在 eclipse.ini 中或通过命令行指定,但没有工作. 我的最大堆大小在(运行 jconsole)之前和之后(System.out.println(java.lang.Runtime.getRuntime().maxMemory());)具有完全相同的限制蚀.1.8G 有没有办法在启动之前修改 JVM 堆大小(例如配置文件?) ..
发布时间:2021-12-06 15:18:49 Java开发

如何在 Eclipse 中增加应用程序堆大小?

有人说我需要在我的应用程序的运行配置中这样做.当我打开那个窗口时,你能告诉我如何设置正确的参数和内存量吗?说说怎么设置2GB还是1.5GB? 解决方案 在你想要自定义的运行配置中(只需点击它)打开标签 Arguments 并添加 -Xmx2048m 在 VM 参数部分.您可能还想设置 -Xms(小堆大小). ..
发布时间:2021-12-06 14:41:48 Java开发

哪个更快:堆栈分配或堆分配

这个问题可能听起来很初级,但这是我与另一位与我合作的开发人员进行的辩论. 我很注意在我可以的地方堆栈分配东西,而不是堆分配它们.他正在和我说话,看着我的肩膀,并评论说没有必要,因为他们在表现方面是一样的. 我一直认为堆栈的增长是恒定时间,堆分配的性能取决于堆的当前复杂性,用于分配(找到合适大小的孔)和取消分配(折叠孔以减少碎片化,因为如果我没记错的话,许多标准库实现在删除过程中需要时间 ..
发布时间:2021-12-01 15:44:38 C/C++开发

为什么 C++ 程序员应该尽量减少“new"的使用?

我偶然发现了堆栈溢出问题使用 std::list 时 std::string 的内存泄漏 和 其中一条评论是这样说的: 停止使用 new 这么多.我看不出你在任何地方使用 new 的任何理由你做到了.您可以在 C++ 中按值创建对象,它是使用该语言的巨大优势. 您不必分配堆上的一切. 不要像 Java 程序员那样思考. 我不太确定他的意思是什么. 为 ..
发布时间:2021-12-01 14:42:38 C/C++开发

Linux 分配器不释放小块内存

Linux glibc 分配器的行为似乎很奇怪.希望有人可以对此有所了解.这是我拥有的源文件: first.cpp: #include #include #include #include int main() {std::list指针;for(size_t i = 0; i 第二个.cpp: #include #include #include int main() {字符** p ..
发布时间:2021-11-27 08:08:37 C/C++开发

Java 原语数组是存储在堆栈中还是堆中?

我有一个这样的数组声明: int a[]; 这里的a 是一个原始int 类型的数组.这个数组存储在哪里?它存储在堆上还是堆栈上?这是一个原始类型int,所有原始类型都不存储在堆上. 解决方案 正如 gurukulki 所说,它存储在堆上.但是,您的帖子暗示了一种误解,这可能是由于某些善意的人传播了“原始人总是生活在堆栈中"的神话.这是不真实的.局部变量在栈上有它们的值,但不是所有的原始 ..
发布时间:2021-11-25 20:28:06 Java开发

G1 上的 Java 7 (JDK 7) 垃圾收集和文档

Java 7 已经发布一段时间了,但我找不到任何关于垃圾收集器配置的好资源,特别是新的 G1 收集器. 我的问题: G1 是 Java 7 中的默认收集器吗?如果不是,我该如何激活 G1? g1 在 Java7 中有哪些可选设置? 是否对 Java 7 中的 cms 或 parallel collector 等其他收集器进行了任何更改? 在哪里可以找到关于 Java 7 垃圾收集 ..
发布时间:2021-11-25 16:51:16 Java开发

Java 堆术语:年轻代、年老代和永久代?

我正在尝试理解 Java 堆术语中 young、old 和 permanent 的概念是什么,更具体地说三代人之间的互动. 我的问题是: 什么是年轻代? 什么是老年代? 什么是永久代? 这三代人如何相互作用/相互关联? 解决方案 这似乎是一个常见的误解.在 Oracle 的 JVM 中,永久代不是堆的一部分.它是用于类定义和相关数据的单独空间.在 Java 6 及更早版本 ..
发布时间:2021-11-25 16:00:48 Java开发

java.lang.OutOfMemoryError:超出 GC 开销限制

我在一个程序中遇到此错误,该程序创建了几个(数十万)HashMap 对象,每个对象有几个(15-20)个文本条目.在提交到数据库之前,必须收集所有这些字符串(不要分解成更小的数量). 根据 Sun 的说法,错误会发生“如果在垃圾收集上花费了太多时间:如果超过 98% 的总时间花费在垃圾收集上,而回收的堆不到 2%,则会出现 OutOfMemoryError被抛出.". 显然,可以使用命 ..
发布时间:2021-11-25 15:06:30 Java开发

将 HeapDumpOnOutOfMemoryError 参数用于 JBoss 的堆转储

有人告诉我,我可以将 -XX:+HeapDumpOnOutOfMemoryError 参数添加到我的 JBoss 启动脚本的 JVM 启动选项中,以便在我们遇到内存不足错误时获取堆转储应用.我想知道这些数据在哪里转储?它只是到控制台,还是某个日志文件?如果只是到控制台,如果我不是通过控制台登录到Unix服务器怎么办? 解决方案 这里是 Oracle 的文档 不得不说: 默认情况下,堆 ..
发布时间:2021-11-25 14:55:26 Java开发

java.lang.OutOfMemoryError:Java 堆空间

我在执行多线程程序时遇到以下错误 java.lang.OutOfMemoryError:Java 堆空间 上述错误发生在其中一个线程中. 据我所知,堆空间只被实例变量占用.如果这是正确的,那么为什么在运行良好一段时间后会发生此错误,因为在创建对象时分配了实例变量的空间. 有没有办法增加堆空间? 我应该对我的程序进行哪些更改以使其占用更少的堆空间? 解决方案 如果你想增 ..
发布时间:2021-11-25 12:48:03 Java开发

无法为对象堆保留足够的空间

每次尝试运行程序时,我都会反复收到以下异常. VM 初始化时出错 无法为对象堆保留足够的空间 无法创建 Java 虚拟机. 我尝试增加虚拟内存(页面大小)和 RAM 大小,但无济于事. 我怎样才能消除这个错误? 解决方案 使用 -XX:MaxHeapSize=512m(或您需要的任何大数字)(或 -Xmx512m)运行 JVM 简称) ..
发布时间:2021-11-25 12:46:41 Java开发

如何确定默认的最大 Java 堆大小?

如果我从 Java 命令行中省略 -Xmxn 选项,则将使用默认值.根据 Java 文档 “默认值是在运行时根据系统配置选择的" 哪些系统配置设置会影响默认值? 解决方案 在 Windows 上,您可以使用以下命令找出应用程序运行所在系统的默认设置. java -XX:+PrintFlagsFinal -version |findstr 堆大小 查找选项 MaxHeapSi ..
发布时间:2021-11-25 12:13:41 Java开发

对 Java 堆分析工具的推荐?

列出您最喜欢的堆分析工具(例如 jprofiler、jmap 等).让我们为每个答案保留一个工具,并列出每个工具的优缺点. 解决方案 YourKit : http://www.yourkit.com/ 优点: 界面干净,速度快 它打开了一个 5-gig 的大型堆转储,jProfiler 笑得停了下来.它只需要 1-2 个 JVM 内存就可以做到这一点. 缺点:当然... ..
发布时间:2021-11-25 10:47:55 Java开发

在 Java 中增加堆大小

我正在使用 8 GB RAM 的 Windows 2003 服务器(64 位).如何增加堆内存最大值?我正在使用 -Xmx1500m 标志将堆大小增加到 1500 Mb.我可以将堆内存增加到物理内存(6 GB 堆)的 75% 吗? 解决方案 您可以在 32 位系统上增加到 2GB.如果您使用的是 64 位系统,则可以更高.如果您选择错误,无需担心,如果您在 32 位系统上要求 5g,jav ..
发布时间:2021-11-25 10:34:48 Java开发