Предполагая, что вы работаете на горячей точке и до тех пор, пока время жизни среза очень короткоживущее, например. немедленно используется в способе создания его или его вызывающим абонентом, то escape analysis должен иметь возможность устранить это распределение.
Это оптимизация JVM, поэтому нет никакой гарантии, что это произойдет, но в целом это достаточно хорошо, чтобы не беспокоиться об этих вещах.
Кроме того, молодые GC очень эффективны. Стоимость таких короткоживущих объектов очень низка, даже если EA не врывается.
Также вам следует избегать преждевременных оптимизаций. Беспокоитесь о таких вещах, как только вы измерили производительность и выяснили, где находятся фактические узкие места.
Можете ли вы уточнить более подробную информацию о том, как вы хотите нарезать «ByteBuffer»? Если вы сохраняете «ByteBuffer» верхнего уровня, на самом деле это не лишний мусор. –
Скажем, у меня есть класс: Класс X { ByteBuffer get() { \t return temp.slice(); \t} void set (ByteBuffer in) { temp.clear(); // Копировать temp.flip() }} Как я могу переписать получить таким образом, что я не создавать мусор, а не передав вызывающему абоненту байтовый буфер, вызывающий нужно переворачивать – user5775299