Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
несколько первых ссылок дали ответ 7 или 8 ТБВам наврали, плюньте им в глаз.
2) страница зарезервирована, но физическую память под неё ещё никто не просилКосяк не в рантайме Go, косяк в ядре ОС
А, ну это опять рукожопые мелкомягкие.
Microsoft will only support configurations they can test
И что не так с резервированием 8Гб памяти в 2-терабайтном адресном пространстве?То, что это опечатка, и имелось ввиду >8Тб.
Проверяли?Ну вообще-то да, вчера прогнал тест с вызовом mmap с резервированием 100 терабайт адресного пространства.
то не получится мепить 100терабайтные секцииЧто за ересь вы несёте? У mmap есть комбинация флагов по действию аналогичная MEM_RESERVE у VirtualAlloc. Причём тут вообще оверкоммит?
0:000> lmm kernelbase start end module name 76110000 761b2000 KERNELBASE (deferred)
То что на ОДНОЙ системе kernelbase.dll вылез куда не следует как раз и говоритЭто говорит, что где-то в загрузчике баг, возможно, уже пофикшеный. Чем виноват рантайм Go мне не ясно.
Например, пусть оно запустит дефрагментатор физической памяти, подвигает адреса в виртуальной и сделает последовательный блок.
> Физическую память дефрагментировать не нужно
это кому как.
и я о том же. Пилить и пилить.
2) Судить имеет право тот, кто разбирается в предмете. Иногда лучше жевать.
Go is a general-purpose language designed with systems programming in mind.
#include <cstdio>
#include <cstdlib>
#include <cstring>
int main(int argc, char **argv)
{
enum { MEMORY_SIZE = 1024*1024*1024 };
void *memory = malloc(MEMORY_SIZE);
if (memory == NULL)
{
perror(argv[0]);
return EXIT_FAILURE;
}
memset(memory, 0, MEMORY_SIZE);
printf("Well, actually I allocated a gig of RAM :P\n");
free(memory);
return EXIT_SUCCESS;
}
char *memory = new char[MEMORY_SIZE];Вы сказали, что я не могу использовать указатели на переменные на стеке после выхода из функции — я опровергнул это утверждение. Где я не прав?
Go needs the space because it is garbage collected — presumably, all GC languages, or any program that takes a similar approach to memory management, will be susceptible to the same problem.
The problem is hard to replicate and test — most of the time, Go programs run perfectly fine
I love programming in Go. And I agree with Rob Pike that «programmers complain too much when they should be fixing the problem instead».
Unfortunately, I am not familiar enough with the Go runtime code to dive and make the required changes with confidence that I have both actually fixed the problem and not introduced bugs into the memory management code. I don’t have time before my deadline to look into the issue either.
func fs() []byte {
//allocate 64 MB chunks
r := make([]byte, 64*1024*1024)
return r
}
Я считаю, что никакой неприязни у психически здоровых людей(коих на хабре, хочется верить, большинство) нет.О, сколько уже тут было войн тупоконечников с остроконечниками!
а вот выживают из них довольно не многие
Go развивается уже два года. Я использую в продакшене (банковский сектор) больше года. Инфраструктурные издержки снизились в 5-10 раз (относительно старых версий на Java и Python). Снизились издержки — демпируется цена. Демпируются цены — вышибаются конкуренты. Profit.
если бы мое приложение в стиле hello world потребовало почти гиг памяти
Выше уже объясняли разницу между потреблением памяти и резервацией адресного пространства.
О, сколько уже тут было войн тупоконечников с остроконечниками!
Go развивается уже два года. Я использую в продакшене (банковский сектор) больше года. Инфраструктурные издержки снизились в 5-10 раз (относительно старых версий на Java и Python). Снизились издержки — демпируется цена. Демпируются цены — вышибаются конкуренты. Profit.
Выше уже объясняли разницу между потреблением памяти и резервацией адресного пространства.
Это же во многом вопрос экосистемы — наличия фреймворков, IDE, статических анализаторов, байдингов, сообщества и т.д.
Go не рекомендуется использовать для разработки на Windows 32bit (UPD: и на Linux тоже)