gpt4 book ai didi

java - Java进程内存大小和堆大小的区别

转载 作者:行者123 更新时间:2023-12-02 04:38:37 31 4
gpt4 key购买 nike

有人可以告诉我Java进程内存大小Java堆大小的区别吗?实际上,我试图在计算机上配置 Elasticsearch 1.5.2 实例。它的文档

https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html#_environment_variables

表示我可以为进程配置最大允许内存。我想这就是它的完成方式

export JAVA_OPTS=”-Xms256m -Xmx512m”

此外,我可以设置 ES_HEAP_SIZE 环境变量来调整最大堆大小(未给出语义)。谁能告诉我两者之间的区别以及如何配置(指定内存的语法)ES_HEAP_SIZE?

最佳答案

堆是存储 Java 应用程序创建的对象的地方,这是垃圾收集发生的地方,即 Java 应用程序使用的内存。

JVM 进程的总内存消耗不仅仅包括 Java 堆,这就是为什么您的 Java 进程内存大小将大于最大堆大小。示例:

  • 线程堆栈
  • 由 native 代码/库分配的内存

Elasticsearch 将使用 ES_HEAP_SIZE 变量将 Xms 和 Xmx 定义为此值

查看代码 => https://github.com/elastic/elasticsearch/blob/1d3a8ad36a5eec76a246656b098cf1f68b0989fa/bin/elasticsearch.in.sh#L11

因此,在启动 Elasticsearch 之前,您需要定义 ES_HEAP_SIZE

例如,您可以在 /etc/default/elasticsearch 中执行此操作(在 Debian 上),使用 export ES_HEAP_SIZE=8g

关于java - Java进程内存大小和堆大小的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30453625/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com