2019/05/07

자바 동시성 프레임워크에는 모든 기본 타입을 덮어씌우는 AtomicInteger, AtomicBoolean 같은 Atomic 클래스들과 참조 타입에 대한 AtomicReference클래스가 추가되었다. 이 클래스들은 모두 원자(atomic)연산을 보장한다. AtomicInteger를 사용하면 동기화된 블록은 더 이상 필요하지 않다. AtomicInteger클래스가 값을 읽고 쓰는 동안 변경되지 않는다는 걸 보장해주기 때문이다. public class SharedState { @Test public void sharedState(){ final ExecutorService executorService = Executors.newCachedThreadPool(); final AtomicCounter coun..
public class SharedState { @Test public void sharedState(){ final ExecutorService executorService = Executors.newCachedThreadPool(); final SimpleCounter simpleCounter = new SimpleCounter(); executorService.execute(new CounterSetter(simpleCounter)); simpleCounter.setNumber(200); assertEquals(200, simpleCounter.getNumber()); } private static class CounterSetter implements Runnable{ private final S..
컴파일 컴파일러는 맨 처음 문법에 맞게 프로그램을 작성했는지, 적합한 타입을 사용했는지 등의 규칙을 확인한다. 컴파일 결과로 .class 확장자를 가진 파일인 바이트코드가 생성되는데, 실행파일과 유사한 바이너리 형식이며 JVM용이다. 클래스 로딩 클래스 정의의 바이트코드를 실행 중인 JVM의 메모리로 가져오는걸 클래스 로딩이라고 한다. JVM은 .class 바이너리 파일을 가져와서 메모리에 저장할 수 있는 클래스 로더가 있다. 검증 일단 클래스가 로드되면 JVM은 바이트코드가 유효한지 검증한다. 바이트코드 검증을 포함한 일부 검증들은 자신의 클래스 바이트가 있는 메모리 외부로 메모리 위치를 확장하지 않는지 확인하고, 코드 상의 명령어가 완벽한지 확인한다. 해석 코드가 검증되면 JVM은 코드가 실행되는 아..
2019/03/19 - [그 외 ... (정리해야함)/꿀팁] - [JAVA] JVM 메모리 관련 설정(옵션) [JAVA] JVM 메모리 관련 설정(옵션) JVM 메모리 구조 참조 2018/06/29 - [프로그래밍 노트/JAVA] - [JAVA] JVM 메모리구조 애플리케이션을 실행하다가, outOfMemoryError 가 발생하였다면 우리는 JVM의 메모리 설정을 다시해 줄 필요가 있다. java.la.. cornswrold.tistory.com JVM은 각각의 메모리 영역에 할당된 메모리의 크기를 지정할 수 있는 커맨드라인 매개변수를 제공한다. -Xmx : 최대 힙 크기를 지정할 수 있다. ex) java -Xmx 512M JVM이 512MB의 최대 힙 크기를 가진 JVM을 생성한다. JVM은 메모리..
깡냉쓰
'2019/05/07 글 목록