Существует ли AMI AWS для node.js?

Несмотря на принятый ответ (которому я верю, чтобы быть корректным), кажется, существуют беспорядки о том, сколько байтов выделяется из-за выравнивания. Таким образом, вот немного теста на моем 32-разрядном Linux с gcc-4.3:

#include <stdio.h>
#include <stdlib.h>

int main()
{
  char* p1 = calloc(6, 4);
  char* p2 = calloc(4, 6);
  char* p3 = calloc(1,1);
  printf("%p, %p, %p\n", p1, p2, p3);
  return 0;
}

результат:

0x826b008, 0x826b028, 0x826b048

то, которое показывает, что и calloc(6,4) и calloc(4,6) выделяют тот же объем памяти, который является , округлилось к 32 байтам в моей системе. Изменение чисел к calloc(3,4) и calloc(4,3) даст следующий результат:

0x95d2008, 0x95d2018, 0x95d2028

, который показывает, что 16 байтов резервируются, когда 12 требуются и выделяются программе. В любом случае, и calloc(a,b) и calloc(b,a) вызовы имеют тот же эффект на использование памяти.

<час>

Добавленный Jonathan Leffler, потому что 300 символов никогда не будут достаточно.

Рассматривают эту программу, которая пропускает память как истинное решето, но демонстрирует точку:

#include <stdlib.h>
#include <stdio.h>

int main()
{
    int i, j, k;

    for (i = 1; i < 17; i++)
        for (j = 1; j < 9; j++)
            for (k = 0; k < 4; k++)
                printf("(%2d,%d)%d: %p\n", i, j, k, calloc(i, j));
    return(0);
}

В Windows, под Cygwin, это запускается путем выделения блоков, которые на расстоянии в 16 байтов (на самом деле, второй блок составляет 24 байта после первого, но после этого, они на расстоянии в 16 байтов). При выделении (2,7), адреса блока начинают увеличивать на 24 байта; аналогично, (3,4) выделяет блоки на расстоянии в 16 байтов, но (3,5) выделяет блоки на расстоянии в 24 байта. И, для записи оба (4,6) и (6,4) указатели возврата на расстоянии в 32 байта.

Это просто демонстрирует, что существуют немного служебные связаны с вызовом выделения. Если Вы смотрите на типичную реализацию malloc () и др. в K& R, Вы будете видеть, что размер блока хранится перед памятью, которую Вы наделены правом использовать. Различные реализации делают эти вещи по-другому; взволнованные по поводу растаптывающей памяти постараются не хранить управляющую информацию рядом, где пользователь может нанести ущерб.

, Когда Вы calloc (4,6), у Вас только есть надежный доступ к 24 байтам данных. Даже если Ваша реализация дает Вам возвращаемые значения, которые на расстоянии в 32 байта, Вы не можете безопасно больше использовать, чем 24 байта, которые Вы запросили. И отладочные версии malloc () будут наблюдать, пишете ли Вы из границ, Вы запросили.

22
задан wprl 22 November 2017 в 19:07
поделиться

2 ответа

Можно установить стандартную версию Amazon Linux AMI. Для разработки и низкого трафика микроэкземпляр является отличным / недорогим.

Если вы хотите получить готовую установку, ознакомьтесь с No.de - зарегистрируйтесь и создайте купон. Также пока бесплатно.

10
ответ дан 29 November 2019 в 04:50
поделиться

Вы можете использовать бесплатные изображения, созданные и поддерживаемые StrongLoop. Есть изображения для стабильных версий узла, для каждого региона. Вы можете искать "StrongLoop" под изображениями. Последняя версия узла на этих изображениях - 0.10.26.

USWest Oregon       -  ami-14d5bf24,     
USEast              - ami-6541590c,        
USWest N California - ami-5a3e061f,  
Ireland             - ami-f154ae86,  
AP Singapore        - ami-5a7f2c08,  
AP Tokyo            - ami-3d2a513c,  
AP Sidney           - ami-b5178f8f,  
AP Sao Paulo        - ami-1919bb04, 

Наряду с узлом эти образы также имеют инструменты StrongLoop cli, которые можно использовать для упрощения развертывания приложений узла в AWS EC2.

7
ответ дан 29 November 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: