有人可以告诉我 Java进程内存大小和 Java堆大小的区别。实际上,我试图在一台机器上配置 Elasticsearch 1.5.2 实例。其文件
说我可以为进程配置最大允许内存。我想这就是它的完成方式
export JAVA_OPTS=”-Xms256m -Xmx512m”
另外,我可以设置ES_HEAP_SIZE环境变量来调整最大堆大小(没有给出语义)。任何人都可以告诉我两者之间的区别以及如何配置(指定内存的语法)ES_HEAP_SIZE?
答案 0 :(得分:2)
Heap是存储Java应用程序创建的对象的地方,这是垃圾收集发生的地方,也就是Java应用程序使用的内存。
JVM进程的总内存消耗包含的内容不仅仅是Java堆,这就是为什么Java进程内存大小将大于最大堆大小的原因。例子:
弹性搜索将使用ES_HEAP_SIZE变量将Xms和Xmx定义为此值
参见code => https://github.com/elastic/elasticsearch/blob/1d3a8ad36a5eec76a246656b098cf1f68b0989fa/bin/elasticsearch.in.sh#L11
因此,您需要在启动Elasticsearch
之前定义ES_HEAP_SIZE您可以使用/etc/default/elasticsearch
export ES_HEAP_SIZE=8g
中(在Debian上)执行此操作