자바 8 새로운 기능 학습

자바 8 이 정식으로 발 표 된 지 며칠 되 지 않 았 습 니 다.오늘 특별히 체험 해 보 았 습 니 다.공식 문서 와 소인 의 평 가 를 보 았 습 니 다.가장 인상적 인 것 은 두 가지 가 있 습 니 다.Lambda 표현 식 과 MetaSpace!
Lambda 표현 식
Lambda 표현 식 은 수많은 부 름 이 시작 되 었 다 고 할 수 있 습 니 다.언제 부터 자바 가 이 기능 을 추가 해 야 했 는 지 기억 이 나 지 않 습 니 다.오늘 에 야 실현 되 었 습 니 다!Lambda 표현 식 은 여러분 에 게 낯 설 지 않 을 것 입 니 다.C\#언어 는 일찍부터 Lambda 표현 식 을 지원 합 니 다.Lambda 표현 식 의 장점 은 매우 간결 하 다 는 것 이다.원래 5 줄 코드 는 현재 한 줄 에서 실 현 될 수 있 고 가 독성 이 강하 다 는 것 이다.다음은 공식 문서 인 Lambda Quick Start 의 한 예 입 니 다
public class RunnableTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("===RunnableTest===");
		// Anonymous Runnable
		Runnable r1=new Runnable() {
			
			public void run() {
				System.out.println("hello world one!");
			}
		};
		
		//Lambda Runnable
		Runnable r2=() ->System.out.println("Hello world two!");
		
		r1.run();
		r2.run();
	}
Lambda 문법 이 간결 하고 가 독성 이 강하 다 는 것 을 알 수 있 습 니 다.자바 가 이번에 Lambda 표현 식 특성 을 추가 한 후 새로운 가방 을 추가 하 였 습 니 다:자바 util.function.이 가방 에는 많은 인터페이스 가 정의 되 어 있 습 니 다.이 인 터 페 이 스 를 통 해 Lambda 표현 식 을 사용 하면 유 니 버 설 이 강 한 프로그램 을 쉽게 개발 할 수 있 습 니 다.구체 적 으로 사용 하면 공식 문 서 를 볼 수 있 습 니 다.또한 자바 8 은 collection,concurrent 등 원래 의 가방 을 많이 수정 하여 람 다 표현 식,특히 collection 집합 류 를 사용 할 수 있 도록 찾 고 여과 하 는 방법 을 많이 추 가 했 습 니 다.람 다 표현 식 과 function 패키지 의 인 터 페 이 스 를 통 해 집합 요 소 를 신속하게 찾 고 업무 논리 등 을 할 수 있 습 니 다.Remove PermGen,Metaspace
개발 과정 에서 이런 오 류 를 겪 었 을 것 입 니 다.OutOfmorry:PermGen,특히 웹 응용 에서 열 배치 나 프레임 워 크 를 대량으로 사용 하 는 오류 가 자주 발생 합 니 다.이 는 프로그램 이 시 작 될 때 클래스 정보 와 상수 일 부 를 JVM 메모리 에 미리 불 러 오기 때 문 입 니 다.이 메모 리 는 PermGen 이 라 고 합 니 다.PermGen 은 기본 값 이 작 기 때문에 조정 하지 않 을 때 PermGen 이 부족 한 경우 가 자주 발생 합 니 다.또한 프로그램 이 메모리 누 출 상황 이 있어 메모리 회수 가 PermGen 메모 리 를 제때에 회수 하지 못 해 메모리 사용 이 점점 커지 고 있 습 니 다.
이번 자바 8 은 JVM 을 수정 하여 PermGen 메모 리 를 제거 하고 Metaspace 가 나 타 났 습 니 다.사실 이 두 가지 역할 은 모두 유사 합 니 다.모두 클래스 정 보 를 불 러 오 는 데 사 용 됩 니 다.하지만 PermGen 은 JVM 메모리 에 있 습 니 다.새로운 Metaspace 는 로 컬 메모리 에 직접 있 습 니 다!!
즉,Metaspace 크기 는 기본적으로 제한 을 받 지 않 습 니 다.(물론 로 컬 기기 의 메모리 크기 에 따라)PermGen 메모리 가 부족 합 니 다.이러한 오 류 는 더 이상 볼 수 없습니다.프로그램 이 큰 메모리 가 필요 하지 않 으 면 기계 자체 의 메모리 보다 더 큽 니 다.
그러면 저희 가 Metaspace 메모리 크기 를 조절 하려 면 어떻게 해 야 하나 요?MaxMetaspaceSize 라 는 매개 변 수 는 최대 Metaspace 공간 을 제어 하 는 데 사용 할 수 있 습 니 다.이 인 자 를 설정 하면 프로그램 에 메모리 가 누설 되 거나 클래스 정보 가 매우 많 을 때 Metaspace 사용량 이 MaxMetaspace Size 를 초과 할 수 있 습 니 다.이 때 프로그램 에 오류 가 발생 할 수 있 습 니 다:OutOfmorry:Metaspace!
외국 에서 어떤 사람 이 두 버 전의 JVM 이 이 메모리 수정 에 미 친 영향 을 상세 하 게 비교 했다.
Java 8: From PermGen to Metaspace

좋은 웹페이지 즐겨찾기