有人可以告诉我Java进程内存大小和Java堆大小的区别吗?实际上,我试图在计算机上配置 Elasticsearch 1.5.2 实例。它的文档
表示我可以为进程配置最大允许内存。我想这就是它的完成方式
export JAVA_OPTS=”-Xms256m -Xmx512m”
此外,我可以设置 ES_HEAP_SIZE 环境变量来调整最大堆大小(未给出语义)。谁能告诉我两者之间的区别以及如何配置(指定内存的语法)ES_HEAP_SIZE?
最佳答案
堆是存储 Java 应用程序创建的对象的地方,这是垃圾收集发生的地方,即 Java 应用程序使用的内存。
JVM 进程的总内存消耗不仅仅包括 Java 堆,这就是为什么您的 Java 进程内存大小将大于最大堆大小。示例:
- 线程堆栈
- 由 native 代码/库分配的内存
Elasticsearch 将使用 ES_HEAP_SIZE 变量将 Xms 和 Xmx 定义为此值
因此,在启动 Elasticsearch 之前,您需要定义 ES_HEAP_SIZE
例如,您可以在 /etc/default/elasticsearch
中执行此操作(在 Debian 上),使用 export ES_HEAP_SIZE=8g
关于java - Java进程内存大小和堆大小的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30453625/