2

当我构建一个 EC2 实例 m1.small (例如)时,默认我得到 30gb 而不是 160gb。

我在谷歌看到我需要添加临时存储/实例存储存储。我的问题是:有没有办法使用 java sdk 添加临时存储?如果我创建一个标准卷为 160gb 的实例(使用 sdk),我会像创建常规实例并为其附加一个新卷一样收费吗?

更一般地说,所以当他们写一个实例有 160gb 时,这意味着我只有 30gb 和另一个 140gb,我应该只用于我不介意丢失的临时文件?

提前致谢。

4

1 回答 1

0

您不应该尝试使堆大小远大于主内存大小。AFAIK EC2 不提供主内存超过 160 GB 的机器(我可能错了)http://aws.amazon.com/ec2/instance-types/

如果你在谈论这个实例

M1 Small Instance – default++

1.7 GiB memory
 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit)
 160 GB instance storage
 32-bit or 64-bit platform
 I/O Performance: Moderate
 EBS-Optimized Available: No
 API name: m1.small

这读作,您可以使用大约 1.2 到 1.5 GB 的堆和 160 GB 的本地磁盘空间。

AFAIK,您可以将存储作为常规文件访问。

顺便说一句:Java 在大堆大小上执行 Full GC 可能需要越来越长的时间。根据您的系统,最差的时间可能是每 1-4 GB 1 秒。您可以期望一个具有 160 GB 堆的系统可以看到 40 秒的 stop-the-world GC。

出于这个原因,经常探索堆外选项,例如使用数据库、BigMemory 或使用直接内存/内存映射文件。

于 2012-12-12T09:44:35.613 回答