힙 공간 및 람다 표현식 평가
Java 8의 람다 구문을 사용하여 컬렉션을 반복하면 기존 루프 구문에 비해 잠재적인 메모리 오버헤드에 대한 우려가 높아집니다. . 이 경우:
myStream.forEach(item -> { // do something useful }); // Equivalent Old Syntax: myStream.forEach(new Consumer<Item>() { @Override public void accept(Item item) { // do something useful } });
람다 표현식은 호출할 때마다 힙 개체를 생성합니까?
예, 람다 표현식은 잠재적으로 익명 클래스 인스턴스를 생성합니다. 그러나 동작은 구현에 따라 다릅니다. Oracle의 JVM은 일반적으로 값을 캡처하지 않는 람다 표현식에 대해 싱글톤을 생성합니다.
메모리 소비 및 성능
힙 객체를 생성하면 특히 힙 객체를 처리할 때 성능과 메모리 사용에 영향을 미칠 수 있습니다. 크고 복잡한 데이터 구조. 그러나 이 오버헤드의 정도는 다음과 같은 여러 요소에 따라 달라집니다.
Traditional을 선호해야 할까요? 루프?
대규모 다중 레벨 데이터 구조를 반복하기 위해 기존 루프를 사용하는 것이 어떤 경우에는 여전히 선호될 수 있습니다. 특히 람다 표현식이 복잡하거나 큰 개체를 캡처하는 경우 더욱 그렇습니다. 그러나 다음 사항에 유의하는 것이 중요합니다.
위 내용은 람다 표현식은 항상 Java에서 상당한 힙 오버헤드를 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!