더 자바, 코드를 조작하는 다양한 방법

더 자바, 코드를 조작하는 다양한 방법

(30개의 수강평)

867명의 수강생
49,500원
지식공유자 · 백기선
24회 수업· 총 4시간 36분수업
평생 무제한 시청
수료증 발급 강의
수강 난이도 초급, 중급
Accidently Woo 프로필

jar생성시 문제 Accidently Woo 7일 전

윈도우환경에서 pom.xml에 똑같은 의존성 추가하고 패키지 경로도 맞춰서 작성했습니다. 

maven-jar-plugin

artifactId에 위내용을 넣었는데도, 콘솔창에서는

WARNING: An illegal reflective access operation has occurred

WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/C:/Users/사용자명/.m2/repository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar) to field java.util.Properties.defaults

WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.Fields

WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations

WARNING: All illegal access operations will be denied in a future release

빨간 Warning 메시지와 함께, 

maven-war-plugin:2.2:war (default-war) @ MasulsaAgent가 실행되고

snapshot이 .war확장자로 생성되네요 ㅠㅠ

이걸로 ,VM옵션주면 class로드할 수 없다고 뜨네요.

2
Chan Chan 프로필

JVM Memory 메서드 영역과 metadata space 의 차이점 Chan Chan 25일 전

안녕하세요 새해복 많이 받으세요:)

더자바 완강 후 메모리구조에 대해 다시 스터디하고 있습니다.

그러던 중 java8 부터 바뀐 metadata space 에 대해 알게 되었는데요, 힙 영역과 분리되어있고 메타데이터(클래스 이름, 메서드 정보 등)을 담고 있는 걸로 확인했습니다.

더자바 강의에서 메모리의 메서드 영역에 클래스 수준의 정보(풀패키기 경로, 메서드 이름, 변수 명 등)를 담는걸로 학습했던 기억이 있어 두 개념의 차이점을 알고 싶어 질문 남깁니다.

좋은 강의 올려주셔서 감사합니다! 

1
전형진 프로필

강의자료에서 링크의 Resolve 내용에 대한 질문입니다. 전형진 1달 전

현재 링크의 Resolve 설명에서 `심볼릭 메모리 레퍼런스를 메소드 영역에 있는 실제 레퍼런스로 교체한다.`라고 명시되어 있습니다.

메소드 영역은 클래스 정보만을 저장하는 영역이라 알고 있어서 메소드 영역이 아니고 힙 영역이라고 맞다고 생각이 드는데, 이것이 맞는지 궁금합니다.

1
보물섬 프로필

제네릭을 쓰는 클래스 생성방법은 없나요? 보물섬 5달 전

안녕하세요.

강좌 잘 보고 있습니다.

강좌를 보고 실습하고 있는데요.

제가 좀 변태적인 취향인지라...

제네릭한 클래스를 newInstance 를 이용해서 생성하려고

하는데요. 어떻게 해야할지 도통 감이 안잡히네요.

2
정민석 프로필

ClassLoader에서 초기화 하는 과정에서 궁금한 점이 있습니다. 정민석 5달 전

강의를 통해 클래스의 static 변수등을 메소드 영역에 저장하는 순간이 '초기화' 과정에서 이뤄진다는 점을 알게 되었습니다. 그리고 관련해서 제가 예전에 공부했던 내용중에 궁금했던 점이 있어 질문 드리고 싶습니다!

예전에 Singleton객체에서 LazyHolder를 통한 방식을 공부하다가. ClassLoader이 지연타임로딩을 통해 클래스를 필요한 순간에만 로딩한다는 사실을 배웠었습니다.

public Class ExampleSingleton{

    private ExampleSingleton(){}

    public static ExampleSingleton get(){
       return LazyHolder.INSTANCE;

    }
   

    private static class LazyHolder{

        private static final INSTANCE = new ExampleSingleton();    

    }
}

위와같은 코드가 있을때 static으로 선언된 클래스는 ExampleSingleton클래스가 로드될때 같이 로딩되지 않고, 실제 LazyHolder클래스를 사용할때 로딩된다는 내용이었습니다.
하지만 static 변수는 ExampleSingleton클래스가 로드될때 메모리에 생성 하고, 왜 똑같이 내부에 static으로 선언된 LazyHolder클래스는 메모리에 올라가지 않는지 궁금합니다..! 

1
정민석 프로필

로딩후에, Class 객체를 생성하여 “힙" 영역에 저장하는 과정에서 궁금한 점이 있습니다! 정민석 5달 전

해당 클래스 내용을 로딩후에 Class<Example>과 같은 클래스 객체를 생성해서 heap에 저장하는 것으로 이해했습니다.

이때 구체적으로 힙의 어떤영역에 저장되는지 궁금합니다!
heap의 에덴 영역에 들어가는 것인지, Permanent영역에 들어가는것인지 궁금합니다!

Permanent 영역으로 들어갈 경우, java 8 이후에 permanent영역이 native영역으로 이동되어서 그쪽에 저장하는 것인가요?

에덴 영역으로 들어가는 경우 GC의 대상이 되지 않고 어떻게 유지 될 수 있는지 궁금합니다!(이 객체에 대한 어떤 참조가 있는지)

1
Bpone 프로필

강의문서 오타 수정 요청 Bpone 5달 전

22강 애노테이션 프로세서 정리

 

애노테이션 프로세서 장점 -> 애노테이션 프로세서 단점

- 기존 클래스 코드를 변경할 때는 약간의 hack이 필요하다.

 

 

강의 내용을 들어봤을 때 단점이 맞는 것 같습니다.

1
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스