История изменений
Исправление foror, (текущая версия) :
Давай начнём с того, что эквивалентный джава код будет выглядеть так:
public class Test {
static class Table {
int x2;
int x3;
String str;
public Table(int i) {
x2 = i*2;
x3 = i*3;
str = Integer.toString(x3);
}
}
private HashMap<Integer, Table> hash = new HashMap<>();
public Test() {
}
private void log(String s) {
System.out.println(s);
}
public void test() {
for (int i = 0; i < 1000*1000; i++) {
hash.put(i, new Table(i));
}
log("Generated");
Scanner scan = new Scanner(System.in);
scan.nextInt();
}
public static void main(String[] args) {
Test m = new Test();
m.test();
}
}
В жс нет long-ов и v8 держит всё это дело в 32 битных переменных. Эквивалентный код на java 11 скушал как и на ноде - 180 МБ, но правда не опустилось до 127 МБ.
Пойдём дальше, если хочешь хранить большой словарь в памяти, то не используй HashMap из стандартной библиотеки:
private SmoothieMap<Integer, Table> hash = new SmoothieMap<>(1000*1000);
И вот мы достигли отметки 139 МБ.
Исходная версия foror, :
Давай начнём с того, что эквивалентный джава код будет выглядеть так:
public class Test {
static class Table {
int x2;
int x3;
String str;
public Table(int i) {
x2 = i*2;
x3 = i*3;
str = Integer.toString(x3);
}
}
private HashMap<Integer, Table> hash = new HashMap<>();
public Test() {
}
private void log(String s) {
System.out.println(s);
}
public void test() {
for (int i = 0; i < 1000*1000; i++) {
hash.put(i, new Table(i));
}
log("Generated");
Scanner scan = new Scanner(System.in);
scan.nextInt();
}
public static void main(String[] args) {
Test m = new Test();
m.test();
}
}
В жс нет long-ов и v8 держит всё это дело в 32 битных переменных. Эквивалентный код на java 11 скушал как и на ноде - 180 МБ, но правда не опустилось до 127 МБ.
Пойдём дальше, если хочешь хранить большой словарь в памяти, то не используй HashMap из стандартной библиотеки:
private SmoothieMap<Integer, Table> hash = new SmoothieMap<>(1000*1000);
И вот мы достигли отметки 139 МБ. Добавь вот этот ключик -XX:+UseCompressedStrings и получишь 113 МБ.