Поиск библиотеки Sophos / модуля / документации API в python 3X

Во-первых, «размер объекта» не является четко определенной концепцией Java. Вы могли бы означать сам объект, с его членами, объектом и всеми объектами, на которые он ссылается (ссылочный граф). Вы можете указать размер в памяти или размер на диске. И JVM разрешено оптимизировать такие вещи, как Strings.

Итак, единственный правильный способ - спросить JVM с хорошим профилировщиком (я использую YourKit ), что, вероятно,

Однако из приведенного выше описания кажется, что каждая строка будет автономной и не имеет большого дерева зависимостей, поэтому метод сериализации, вероятно, будет хорошим приближением для большинства JVM , Самый простой способ сделать это:

 Serializable ser;
 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 ObjectOutputStream oos = new ObjectOutputStream(baos);
 oos.writeObject(ser);
 oos.close();
 return baos.size();

Помните, что если у вас есть объекты с общими ссылками, это не даст дать правильный результат, а размер сериализации не будет всегда соответствуют размеру в памяти, но это хорошее приближение. Код будет немного более эффективным, если вы инициализируете размер ByteArrayOutputStream до разумного значения.

0
задан Sagar T 16 January 2019 в 08:42
поделиться