Skip to content

Commit ce4aca3

Browse files
committed
Update 13주차.md
1 parent fcaef91 commit ce4aca3

File tree

1 file changed

+4
-10
lines changed

1 file changed

+4
-10
lines changed

study/13주차.md

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -539,16 +539,11 @@ NIO의 채널은 무조건 버퍼에 데이터를 보관해야 하기 때문에
539539
<br />
540540

541541
#### 메모리 공간, 버퍼 생성 시간
542-
다이렉트 버퍼는 운영체제의 메모리를 할당 받기 위해 운영체제의 네이티브 함수를 호출해야 하고 그 외 여러 처리를 해야 하기 때문에 속도가 느린 편
543-
544-
따라서, 한 번만 생성하여 **재사용** 하는 것이 효율적
545-
546-
<br />
542+
다이렉트 버퍼는 운영체제의 메모리를 할당 받기 위해 운영체제의 네이티브 함수를 호출해야 하고 그 외 여러 처리를 해야 하기 때문에 속도가 느린 편. **한 번만 생성하여 재사용 하는 것이 효율적**
547543

548544
#### 버퍼 크기
549545
넌다이렉트 버퍼는 JVM의 제한된 메모리를 사용하기 때문에 작은 크기의 버퍼만 생성 가능. 초과 시 ```OutOfMemoryError``` 발생
550546

551-
<br />
552547

553548
#### 입출력 성능
554549
넌다이렉트 버퍼는 입출력하기 위해 임시 다이렉트 버퍼를 생성하고 버퍼 내용을 임시 버퍼에 복사하여 사용하므로, 직접 다이렉트 버퍼를 사용하는 것보다 낮은 성능
@@ -559,8 +554,6 @@ NIO의 채널은 무조건 버퍼에 데이터를 보관해야 하기 때문에
559554
#### 넌다이렉트 버퍼
560555
각 버퍼 클래스의 정적메소드인 ```allocate()``` 또는 ```wrap()``` 메소드 호출
561556

562-
<br />
563-
564557
#### 다이렉트 버퍼
565558
.```ByteBuffer``` 클래스의 정적메소드인 ```allocateDirect()``` 메소드를 호출하여 생성하고, 다른 타입의 다이렉트 버퍼를 생성하려면 ```ByteBuffer``````asCharBuffer()```, ```asIntBuffer()``` 등의 메소드 활용
566559

@@ -577,6 +570,7 @@ class PerformanceEx {
577570

578571
long size = Files.size(from);
579572

573+
// 버퍼를 사용할 채널 생성
580574
FileChannel fromChannel = FileChannel.open(from);
581575
FileChannel nonDirectChannel = FileChannel.open(to1, EnumSet.of(StandardOpenOption.CREATE, StandardOpenOption.WRITE));
582576
FileChannel directChannel = FileChannel.open(to2, EnumSet.of(StandardOpenOption.CREATE, StandardOpenOption.WRITE));
@@ -587,7 +581,7 @@ class PerformanceEx {
587581

588582
long start, end;
589583

590-
// 넌다이렉트 입출력 시간 확인
584+
// 넌다이렉트 버퍼 입출력 시간 확인
591585
start = System.nanoTime();
592586
for (int i = 0; i < 100; i++) {
593587
fromChannel.read(nonDirect);
@@ -602,7 +596,7 @@ class PerformanceEx {
602596
// 파일 위치 0으로 설정(처음으로 되돌림)
603597
fromChannel.position(0);
604598

605-
// 다이렉트 입출력 시간 확인
599+
// 다이렉트 버퍼 입출력 시간 확인
606600
start = System.nanoTime();
607601
for (int i = 0; i < 100; i++) {
608602
fromChannel.read(direct);

0 commit comments

Comments
 (0)