我正在尝试让 dbpedia java 包在 AWS ECs 微实例上运行(此处信息: https://github.com/dbpedia-spotlight/dbpedia-spotlight/wiki/Run-from-a-JAR )
问题是需要额外的java堆空间,我想亚马逊不太喜欢给我它。这是命令和输出。我尝试过 -Xmx10G 等,没有骰子。我猜亚马逊微实例可能在内存/堆空间方面受到限制,但我真的不确定如何更改它或者这是否是问题所在。谢谢!
$ java -Xmx1024m -jar dbpedia-spotlight.jar en http://localhost:2223/rest
Jan 31, 2015 6:48:04 AM org.dbpedia.spotlight.db.memory.MemoryStore$ load
INFO: Loading MemoryTokenTypeStore...
Jan 31, 2015 6:48:05 AM org.dbpedia.spotlight.db.memory.MemoryTokenTypeStore createReverseLookup
INFO: Creating reverse-lookup for Tokens.
Jan 31, 2015 6:48:06 AM org.dbpedia.spotlight.db.memory.MemoryStore$ load
INFO: Done (1527 ms)
Jan 31, 2015 6:48:06 AM org.dbpedia.spotlight.db.memory.MemoryStore$ load
INFO: Loading MemorySurfaceFormStore...
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000ec7a8000, 153452544, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 153452544 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/ubuntu/dbpedia-spotlight-quickstart-0.6.5/hs_err_pid2347.log
最佳答案
如果您要求 Java 分配比可用内存更多的内存,它将会崩溃 ( longer, more technical answer here )。 t1.micro 的内存刚刚超过 600mb,t2.micro 的内存为 1000mb。
作为起点,假设有一个现代 Ubuntu 实例,您应该能够在 t1.micro 上运行 350-400mb,在 t2.micro 上运行 750-800mb。
如果这还不够,请使用更大的实例。接下来的好步骤是 t2.medium 或 m3.large。如果它确实占用内存,则 r3.* 服务器拥有更多内存。
关于java - ec2 AWS 微实例上的 java 堆问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28249083/