WEBVTT

00:00:00.000 --> 00:00:01.680
이번 주에 맞춰 보시
자마린 쇼 어디에

00:00:01.680 --> 00:00:03.360
내 좋은 친구 알렉시 에 이야기

00:00:03.360 --> 00:00:06.810
메모리 관리에 대한 정보
응용 프로그램을 제공합니다. 그래서 조정.

00:00:06.810 --> 00:00:13.200
[음악]

00:00:13.200 --> 00:00:14.280
>> 다시 오신 것을 환영합니다, 모두,

00:00:14.280 --> 00:00:15.405
자마린 쇼에.

00:00:15.405 --> 00:00:16.650
나는 당신의 호스트 제임스 몬테마그노입니다.

00:00:16.650 --> 00:00:17.820
오늘, 내 가장 친한 친구는

00:00:17.820 --> 00:00:21.270
전 세계 알렉시와
나. 어떻게 지내세요, 친구?

00:00:21.270 --> 00:00:22.905
>> 나는 좋다. 당신은 어떠세요?

00:00:22.905 --> 00:00:24.960
>> 나는 환상적이다.
아름다운 날

00:00:24.960 --> 00:00:26.640
여기 레드먼드, 워싱턴 매일.

00:00:26.640 --> 00:00:27.325
>> 입니다.

00:00:27.325 --> 00:00:29.085
>> 이제 모바일에서 온 것입니다.

00:00:29.085 --> 00:00:31.065
고객 자문
팀, 그 게 맞습니까?

00:00:31.065 --> 00:00:31.920
>> 맞습니다.

00:00:31.920 --> 00:00:33.450
>> 그게 무슨 뜻인가요?

00:00:33.450 --> 00:00:35.370
>> 그것은 우리가 함께 일한다는 것을 의미합니다.

00:00:35.370 --> 00:00:38.250
우리의 고객과 우리
분명히 그들에게 조언.

00:00:38.250 --> 00:00:41.645
그러나 대부분, 우리는 개발자와 함께 작동
도구를 사용하는 방법을 확인합니다.

00:00:41.645 --> 00:00:44.300
그들은 우리의 자마린 도구와 함께 작동 하는 방법,

00:00:44.300 --> 00:00:47.560
그리고 공통점은 무엇입니까?
그들이 직면하는 함정.

00:00:47.560 --> 00:00:48.420
>> 완벽합니다.

00:00:48.420 --> 00:00:50.205
오늘은 에 대해 이야기하고 싶습니다.

00:00:50.205 --> 00:00:52.355
그 중 하나는 메모리 관리입니다.

00:00:52.355 --> 00:00:53.780
>> 당신을 얻었다. 예. 그것은 매우 중요합니다

00:00:53.780 --> 00:00:55.730
왜냐하면 우리는 종종 이야기하기 때문에
모든 멋진에 대해,

00:00:55.730 --> 00:00:57.155
당신이 할 수있는 멋진 기능,

00:00:57.155 --> 00:01:00.440
그러나 우리는 이것을 갖고 싶었습니다.
모범 사례 시리즈

00:01:00.440 --> 00:01:02.340
당신은 문제가 실행하기 때문에.

00:01:02.340 --> 00:01:03.820
그것은 일어난다. 그것은 할 너무 쉽게.

00:01:03.820 --> 00:01:06.345
메모리 관리,
솔직히, 나는 멍청이입니다.

00:01:06.345 --> 00:01:07.770
난 정말 모르겠어요. 난 그냥 좋아,

00:01:07.770 --> 00:01:09.560
"그들은 죽일거야
5 초 내 응용 프로그램.

00:01:09.560 --> 00:01:11.705
그것은 중요하지 않습니다, 맞아?" 하지만
나는 그런 식으로 생각해서는 안된다.

00:01:11.705 --> 00:01:14.210
>> 그건 사실이야. 그것이 우리가 보는 것입니다.

00:01:14.210 --> 00:01:16.850
아무도 신경 쓰지 않았기 때문에
메모리 관리.

00:01:16.850 --> 00:01:21.300
우리는 너무 많은 메모리를 가지고
그리고 당신은 그들을 확인하지 않습니다.

00:01:21.300 --> 00:01:24.750
내 말은, 당신이 마지막으로 언제였는가?
앱 메모리 사용량을 확인?

00:01:24.750 --> 00:01:26.250
>> 마지막으로 충돌을 맞았습니다.

00:01:26.250 --> 00:01:29.510
사실, 나는 매우 했다
이것의 좋은 예.

00:01:29.510 --> 00:01:31.910
나는 이것을 말할 것이다. 이
실제 예입니다.

00:01:31.910 --> 00:01:35.120
자마린 에센셜에 버그가 생겼습니다.

00:01:35.120 --> 00:01:38.375
내가 전화 할 때 즉, 말한다
이 방법은 20,000번,

00:01:38.375 --> 00:01:41.570
내 응용 프로그램 충돌하고 그것을
왜냐하면 내가 아니었기 때문이었다.

00:01:41.570 --> 00:01:45.155
적시처리
네이티브 안드로이드 개체,

00:01:45.155 --> 00:01:46.775
창, 디스플레이.

00:01:46.775 --> 00:01:48.170
그래서 무슨 일이 일어나고 있는지,

00:01:48.170 --> 00:01:50.480
나는 그것을 계속 만들 것입니다.
그리고 그것은 결코 얻을 것 이다

00:01:50.480 --> 00:01:53.135
쓰레기는 이제까지 때문에 수집
나는 그것을 폐기하지 않았다.

00:01:53.135 --> 00:01:54.890
>> 그게 우리가 가는 거야
오늘 에 대해 이야기합니다.

00:01:54.890 --> 00:01:56.925
>> 예. 굉장한. 할 수 있습니다
그것은. 당신은 우리를 위해 무엇을해야합니까?

00:01:56.925 --> 00:02:00.435
>> 그래서 우리는이 작은
두 개의 창과 간단한 응용 프로그램,

00:02:00.435 --> 00:02:02.745
메인 화면과 세부 화면.

00:02:02.745 --> 00:02:06.375
이것은 매우 일반적인 패턴입니다.
UI 탐색 컨트롤러입니다.

00:02:06.375 --> 00:02:09.600
이것은 평범한 자마린입니다.
아이폰 OS 응용 프로그램, 오른쪽?

00:02:09.600 --> 00:02:10.305
>> 좋아.

00:02:10.305 --> 00:02:12.440
>> 우리가 가는 일
할 일은 소개입니다

00:02:12.440 --> 00:02:14.930
많은 메모리 누수,
여러 가지 방법으로.

00:02:14.930 --> 00:02:19.025
하지만 먼저, 나는 에 대해 이야기하고 싶다
네이티브 월드의 차이점

00:02:19.025 --> 00:02:23.960
관리되는 세계
성능 과 메모리.

00:02:23.960 --> 00:02:25.340
따라서 프로세스가 있을 때마다

00:02:25.340 --> 00:02:27.995
운영 체제 제공
메모리 청크입니다.

00:02:27.995 --> 00:02:31.370
당신은 그에 대해 알고 있어야합니다
왜냐하면 일단 메모리가 부족하면

00:02:31.370 --> 00:02:33.670
앱이 충돌하거나
운영 체제가 그것을 죽인다.

00:02:33.670 --> 00:02:35.355
관리되는 메모리에서

00:02:35.355 --> 00:02:40.260
우리의 자마린 모노 는이
이 메모리의 작은 조각.

00:02:40.260 --> 00:02:41.630
그때가 바로 우리가 해야 할 때입니다.

00:02:41.630 --> 00:02:43.670
우리가 어떻게 해야 할지 에 대해 신중하게
뿐만 아니라 그 조각을 사용합니다.

00:02:43.670 --> 00:02:44.030
>> 좋아.

00:02:44.030 --> 00:02:46.640
>> 그래서 당신은 여전히
네이티브 메모리에 대해 알고,

00:02:46.640 --> 00:02:48.905
그리고 지금 일단 당신이 자마린과 함께 작업,

00:02:48.905 --> 00:02:50.320
또한 관리 부분에 대해 알고 있습니다.

00:02:50.320 --> 00:02:52.740
>> 그것을 얻었다. 그래서 당신은
네이티브 메모리, iOS,

00:02:52.740 --> 00:02:55.980
안드로이드 비트와 조각,
.NET 관리 메모리?

00:02:55.980 --> 00:02:56.640
>> 맞습니다.

00:02:56.640 --> 00:02:57.090
>> 완벽합니다.

00:02:57.090 --> 00:03:00.530
>> 객체를 만들 때마다
그리고 당신은 만들, 가정 해 봅시다,

00:03:00.530 --> 00:03:02.330
UI 버튼, 당신은 실제로 만들

00:03:02.330 --> 00:03:04.950
네이티브 UI 버튼과
관리되는 UI 단추 클래스입니다.

00:03:04.950 --> 00:03:06.680
그들은 다른 메모리 영향을 가지고.

00:03:06.680 --> 00:03:10.310
그들은 다른 발생할 수 있습니다.
메모리 문제가 있기 때문에

00:03:10.310 --> 00:03:14.135
또한 수집 하는 네이티브 방법
쓰레기와 관리 방법.

00:03:14.135 --> 00:03:20.385
모노로, 모노 싱글을 사용
세대 가비지 수집기.

00:03:20.385 --> 00:03:23.460
네이티브 세계에서 iOS는 ARC를 사용하여

00:03:23.460 --> 00:03:26.680
안드로이드는 자신의 사용
가비지 수집기,

00:03:26.680 --> 00:03:29.420
그러나 그들은 함께 일해야 한다.
나란히 우리는해야

00:03:29.420 --> 00:03:32.300
당신이 할 수 있기 때문에 그들을 가지고
이를 사용하여 문제를 야기합니다.

00:03:32.300 --> 00:03:32.690
>> 그것을 얻었다.

00:03:32.690 --> 00:03:34.640
>> 그래서 첫 번째와

00:03:34.640 --> 00:03:36.950
소개하는 가장 간단한 접근 방식

00:03:36.950 --> 00:03:40.830
메모리 문제는 구독입니다.
구독 취소 없이.

00:03:42.040 --> 00:03:45.680
가비지 수집기는 알아야 합니다.
쓰레기가 있는 경우.

00:03:45.680 --> 00:03:47.180
하지만 어떻게 알 수 있었을까요?

00:03:47.180 --> 00:03:49.565
그것은 구축 할 수 있어야합니다

00:03:49.565 --> 00:03:53.915
도달 가능성 트리 그래프
그리고 그것은 경로에서 시작합니다.

00:03:53.915 --> 00:03:57.320
우리의 정적 이벤트, 정적 변수,

00:03:57.320 --> 00:03:59.350
정적 이벤트 또는 스레드 롤 호출,

00:03:59.350 --> 00:04:01.910
그들은 모두 도달 할 수있는 경로이며

00:04:01.910 --> 00:04:05.005
가비지 수집기 취급
쓰레기가 아닙니다.

00:04:05.005 --> 00:04:06.810
그래서 당신이 이렇게 가입 할 때마다,

00:04:06.810 --> 00:04:09.560
의 연결 플러그인을 보자.

00:04:09.560 --> 00:04:11.960
알다시피, 제임스, 당신은
이 플러그인에 익숙합니다.

00:04:11.960 --> 00:04:13.400
>> 나는. 예. 아주 많이.

00:04:13.400 --> 00:04:14.960
나는 그것을 좋아한다. 에서
여기, 우리는 단지 뭐야?

00:04:14.960 --> 00:04:16.220
이벤트 구독,

00:04:16.220 --> 00:04:18.610
그리고 그것은 어떤 수 있습니다.
클릭 이벤트와 같은 이벤트,

00:04:18.610 --> 00:04:20.360
센서 변경 이벤트가 있습니다.

00:04:20.360 --> 00:04:22.715
기본적으로 .NET에 있는 모든 것.

00:04:22.715 --> 00:04:25.970
>> 예. 그것은 특정
뿐만 아니라 사마린에.

00:04:25.970 --> 00:04:27.830
그것은 어떤 정적 이벤트

00:04:27.830 --> 00:04:31.745
.NET 및 연결에서
여기에 단지 예입니다.

00:04:31.745 --> 00:04:35.390
내가 말하려고하는, 그것은
정적 이벤트나

00:04:35.390 --> 00:04:38.960
모든 싱글 톤 제공 이벤트.

00:04:38.960 --> 00:04:40.880
그래서 우리가 그렇게 가입 할 때마다,

00:04:40.880 --> 00:04:42.520
그리고 우리가 가지고 있다고 가정 해 봅시다.

00:04:42.520 --> 00:04:47.100
이 작은 작은 조각
연결변경처리기.

00:04:47.100 --> 00:04:49.655
작은 메모리 누수가 발생했습니다.

00:04:49.655 --> 00:04:54.290
우리의 전망이작기 때문에 작습니다.
아주 간단하고 가벼운,

00:04:54.290 --> 00:04:55.400
그러나 메모리 누수입니다.

00:04:55.400 --> 00:04:57.685
>> 그래서 메모리 누수, 왜?

00:04:57.685 --> 00:05:00.860
>> 이 연결성 및

00:05:00.860 --> 00:05:03.830
연결 변경 이벤트
는 정적 참조입니다.

00:05:03.830 --> 00:05:05.270
우리의 쓰레기 수집기.

00:05:05.270 --> 00:05:06.980
일단 우리의 쓰레기
컬렉터가

00:05:06.980 --> 00:05:08.810
쓰레기인지 아닌지 식별합니다.

00:05:08.810 --> 00:05:11.015
그것은 때문이 아니다

00:05:11.015 --> 00:05:14.540
연결 변경 이벤트가
이 처리기에 대한 참조,

00:05:14.540 --> 00:05:17.375
이 처리기는 실제로 처리합니다.

00:05:17.375 --> 00:05:21.080
우리의 참조
세부 정보뷰컨트롤러.

00:05:21.080 --> 00:05:24.680
>> 나는 볼 수 있습니다. 알았어요. 그래서 우리는
이 이벤트를 내부로 만들었습니다.

00:05:24.680 --> 00:05:29.600
이 뷰 컨트롤러와 나는
구독하지만 구독취소되지 않습니다.

00:05:29.600 --> 00:05:31.970
그래서 항상 이것을 가지고 있습니다.
즉시 참조할 수 있습니다.

00:05:31.970 --> 00:05:34.940
그래서 쓰레기 수집가들은 말합니다.
"이봐, 무엇을 사용할 수 있니?"

00:05:34.940 --> 00:05:37.030
그것은 간다, "당신은 그것을 가질 수 없습니다."

00:05:37.030 --> 00:05:38.205
>> 맞습니다.

00:05:38.205 --> 00:05:40.580
>>
내가 있기 때문에 그 게 정확하다

00:05:40.580 --> 00:05:42.185
그게 어떻게 믿는다
그것은 내 마음에 작동합니다.

00:05:42.185 --> 00:05:43.150
내가 옳은지 확인하고 싶다.

00:05:43.150 --> 00:05:47.225
>> 단일 작업 가비지 수집기
메모리를 할당 하는 것입니다.,

00:05:47.225 --> 00:05:48.605
그리고 제대로 그렇게,

00:05:48.605 --> 00:05:50.540
가비지 수집기는

00:05:50.540 --> 00:05:52.730
제대로 식별
그것은 쓰레기 여부입니다.

00:05:52.730 --> 00:05:53.180
>> 그것을 얻었다.

00:05:53.180 --> 00:05:55.790
접근성 트리를 만들려면

00:05:55.790 --> 00:05:59.270
가비지 수집기
정적 경로 또는

00:05:59.270 --> 00:06:01.430
그냥 경로 및 정적 이벤트

00:06:01.430 --> 00:06:03.500
또는 정적 속성
경로 중 하나로서.

00:06:03.500 --> 00:06:06.460
또한 로컬 변수,
다른 것들을 많이.

00:06:06.460 --> 00:06:07.020
>> 그것을 얻었다.

00:06:07.020 --> 00:06:11.820
>> 그래서 그냥 실행하자
어떻게 작동하는지 보여줍니다.

00:06:11.820 --> 00:06:14.745
당신은 우리가 할 것이라고 생각합니까
어떤 차이를 참조하십시오?

00:06:14.745 --> 00:06:17.540
>> 나는 모른다. 제 말은
바라건대 하지 않기 때문에

00:06:17.540 --> 00:06:20.090
그것은 너무 간단 내가 생각하고있는 것입니다.

00:06:20.090 --> 00:06:22.160
지금, 내 두려움은 하지만

00:06:22.160 --> 00:06:24.200
등록을 통해 등록하기 때문에
그리고 또 다시,

00:06:24.200 --> 00:06:26.750
이벤트를 변경하는 경우

00:06:26.750 --> 00:06:28.850
우리는 아마 점점
많은 이벤트에서.

00:06:28.850 --> 00:06:30.635
>> 그렇습니다. 확인해 봅시다.

00:06:30.635 --> 00:06:33.560
그래서 세부 정보 페이지로 이동했습니다.

00:06:33.560 --> 00:06:36.185
이제 Wi-Fi 연결을 끊겠습니다.

00:06:36.185 --> 00:06:38.510
>> 여기에서 는
iOS 시뮬레이터.

00:06:38.510 --> 00:06:41.975
그래서 실제로 사용
컴퓨터의 인터넷.

00:06:41.975 --> 00:06:46.460
>> 예. 우리는 방금 여기에 이벤트가 있습니다.
연결변경되었습니다.

00:06:46.460 --> 00:06:51.910
몇 번 돌아가봅시다.
그리고 몇 번 더,

00:06:51.910 --> 00:06:54.630
그리고 나는 메인 페이지로 돌아왔습니다.

00:06:54.630 --> 00:06:58.215
나는 섬세하지 않다.
아무것도 지금,

00:06:58.215 --> 00:07:01.280
그리고 나는 내 세부 사항을 가정
페이지는 바로, 더 이상 존재하지 않습니다?

00:07:01.280 --> 00:07:01.430
>> 그렇습니다.

00:07:01.430 --> 00:07:02.810
>> 내 구독 처리기

00:07:02.810 --> 00:07:04.805
작동 하지 않아야 하기 때문에
아무것도 하지 않았다.

00:07:04.805 --> 00:07:07.015
Wi-Fi를 켜겠습니다.

00:07:07.015 --> 00:07:09.510
>> 좋아. 그래서 우리는 실제로

00:07:09.510 --> 00:07:11.910
이 연결 변경
두 번째 페이지에 있습니다.

00:07:11.910 --> 00:07:12.420
>> 두 번째 페이지.

00:07:12.420 --> 00:07:13.665
>> 글쎄, 난 첫 페이지에 있어요.

00:07:13.665 --> 00:07:17.440
>> 예. 그래서 우리는 기대하지 않는다
우리의 처리기는 작동,

00:07:17.440 --> 00:07:18.645
하지만 우리가 무엇을 가지고 봐.

00:07:18.645 --> 00:07:21.090
우리는 단지 네 개의 핸들러를 가지고
코드를 실행하고,

00:07:21.090 --> 00:07:23.600
그리고 그것은 어떤 수 있습니다.
데이터베이스 업데이트 코드,

00:07:23.600 --> 00:07:25.505
저장 설정, 무엇이든.

00:07:25.505 --> 00:07:28.070
문제뿐만 아니라 여기에
메모리 관리

00:07:28.070 --> 00:07:30.635
그것은 약간의 메모리를 가지고 있기 때문에.

00:07:30.635 --> 00:07:34.970
그것은 또한 우리가 가지고 있기 때문에 문제
일부 코드도 실행됩니다.

00:07:34.970 --> 00:07:37.445
그런 다음 의미가 있습니다.
즉, 세부 정보 페이지,

00:07:37.445 --> 00:07:39.350
지금은 결코 될 수 없다
쓰레기 수집?

00:07:39.350 --> 00:07:42.455
그래서 지금 난 그냥이
항상 메모리에 세부 정보 페이지.

00:07:42.455 --> 00:07:43.400
>> 안타깝게도 그렇습니다.

00:07:43.400 --> 00:07:44.660
>> 오, 내 선하심, 그건 나쁜거야.

00:07:44.660 --> 00:07:47.385
>> 그건 나쁘다. 개발자는

00:07:47.385 --> 00:07:49.560
우리는 항상 그것을 볼 수 없습니다.

00:07:49.560 --> 00:07:54.280
사용자로서 앱이 충돌하는 것을 볼 수 있습니다.
일주일에 한 번 처럼, 무엇이든.

00:07:54.280 --> 00:07:56.675
난 그냥 다시 시작 합니다.
계속 사용할 수 있습니다.

00:07:56.675 --> 00:07:58.220
그것이 보고되지 않는 이유입니다.

00:07:58.220 --> 00:08:00.350
그것은 매우 심각하게 촬영되지 않습니다,

00:08:00.350 --> 00:08:03.950
하지만 그것은 특히 경우 문제

00:08:03.950 --> 00:08:08.330
거기에 거대한 이미지를 얻을
당신의 기억에 영향을 미칩니다.

00:08:08.330 --> 00:08:10.910
그래서 나는 코멘트를 취소 할거야
이 코드 줄은

00:08:10.910 --> 00:08:14.680
실제로 일부 메모리 로드를 추가

00:08:14.680 --> 00:08:19.740
여기 그리고 그것은 로드
인터넷에서 이미지.

00:08:19.740 --> 00:08:22.265
우리는 단지 임의의 이미지를 찍고 있습니다.

00:08:22.265 --> 00:08:24.815
나는 그것이 진정으로 무작위임을 보여 드리겠습니다.

00:08:24.815 --> 00:08:27.035
우리가 여기에 무엇을 보자.

00:08:27.035 --> 00:08:29.510
나는 항상 그것에 대해 걱정하고 있다.

00:08:29.510 --> 00:08:32.210
그래. 그래서 우리는이 임의의 이미지를 가지고,

00:08:32.210 --> 00:08:34.370
그리고 그것이 우리가 하는 일입니다.
로드할 예정

00:08:34.370 --> 00:08:37.190
우리의 응용 프로그램 때마다 우리는
세부 정보 페이지로 이동합니다.

00:08:37.190 --> 00:08:37.610
>> 좋아.

00:08:37.610 --> 00:08:40.395
>> 여기에 보여드리겠습니다.

00:08:40.395 --> 00:08:42.970
>> 이것은 완전히 무언가이다
무슨 일이 항상 일어나는지, 맞죠?

00:08:42.970 --> 00:08:45.220
세부 정보 페이지로 이동하기 때문에,

00:08:45.220 --> 00:08:46.740
아마 일부 정보를로드,

00:08:46.740 --> 00:08:48.080
일부 를 당기고있을 수 있습니다
에서 정보

00:08:48.080 --> 00:08:51.095
해당 화면의 데이터베이스,
그리고 그 나쁜 수 있습니다.

00:08:51.095 --> 00:08:53.930
>> 자신이 있다고 상상해 보십시오.
인스 타 그램 응용 프로그램을 사용하여.

00:08:53.930 --> 00:08:55.330
세부 정보 페이지가 있습니다.

00:08:55.330 --> 00:08:56.710
탭하고 따라,

00:08:56.710 --> 00:08:58.435
세부 사항으로 이동, 다시 갔다.

00:08:58.435 --> 00:09:00.720
다른 폴더를 확인 이동,
세부 사항으로 이동,

00:09:00.720 --> 00:09:03.920
다시 사라, 그리고 일주일에 응용 프로그램
충돌하고 아무도 이유를 모른다.

00:09:03.920 --> 00:09:06.680
메모리 문제가 있는 경우
놀이에 올 수 있습니다.

00:09:06.680 --> 00:09:09.180
>> 당신을 얻었다.

00:09:09.180 --> 00:09:11.855
>> 나는 당신에게 그것을 보여주지 않을 것입니다.
메모리 누수가 여전히 존재합니다.

00:09:11.855 --> 00:09:14.650
내가 보여주고 싶어하기 때문에
프로파일러,

00:09:14.650 --> 00:09:16.375
이러한 문제를 식별하는 방법을 확인할 수 있습니다.

00:09:16.375 --> 00:09:17.800
이러한 문제를 식별하려면

00:09:17.800 --> 00:09:19.990
몇 가지 도구가 있습니다.

00:09:19.990 --> 00:09:23.350
우선, 그것은 네이티브 도구,
iOs는 악기를 제공하며,

00:09:23.350 --> 00:09:25.520
두 번째는 관리 도구입니다.

00:09:25.520 --> 00:09:27.005
자마린 프로파일러입니다.

00:09:27.005 --> 00:09:27.990
>> 당신을 얻었다.

00:09:27.990 --> 00:09:29.520
>> 왜 둘 다 필요하다고 생각하나요?

00:09:29.520 --> 00:09:32.985
>> 글쎄요, 그들은 다른 일을 합니다.

00:09:32.985 --> 00:09:36.090
>> 그렇습니다. 실제로
이 이미지 때문에.

00:09:36.090 --> 00:09:38.025
기억. 나는 그것에 대해 얘기했다.

00:09:38.025 --> 00:09:41.565
그들은 실제로 알 수 있습니다.
자신의 부분에 대해.

00:09:41.565 --> 00:09:44.190
그래서 자마린 프로파일러는 아무것도 모른다

00:09:44.190 --> 00:09:47.100
네이티브 메모리에 대한
거기에 생성 된 개체,

00:09:47.100 --> 00:09:50.010
네이티브 악기는
관리되는 메모리에 대해 알고 있습니다.

00:09:50.010 --> 00:09:52.685
그것은 단지 몇 가지가 있다고
생성된 개체의 청크입니다.

00:09:52.685 --> 00:09:54.710
Mono가 객체를 만들 때,

00:09:54.710 --> 00:09:57.275
그것은 여전히 어떻게 든 바인딩
네이티브 개체에.

00:09:57.275 --> 00:09:59.210
그래서 당신이 볼 수있을 것입니다 사람들은,

00:09:59.210 --> 00:10:00.500
그러나 나머지는 모두 그렇지 않습니다.

00:10:00.500 --> 00:10:01.220
>> 좋아. 멋진.

00:10:01.220 --> 00:10:02.945
>> 자마린 프로파일러를 살펴보겠습니다.

00:10:02.945 --> 00:10:06.550
이해하기 쉽습니다.
처음에,

00:10:06.550 --> 00:10:10.955
그리고 그것은 또한 당신에게 좋은 보여줍니다
네임 스페이스와 이름 지정을 좋아합니다.

00:10:10.955 --> 00:10:12.815
그래서 당신은 당신의 개체를 식별 할 수 있습니다.

00:10:12.815 --> 00:10:16.715
작은 버튼 "실행"이 있습니다
여기에서 "프로필 시작"을 선택합니다.

00:10:16.715 --> 00:10:20.050
기업이 필요합니다.
그렇게 할 수 있습니다.

00:10:20.050 --> 00:10:23.870
그러나 그것은 매우 편리하고
저는 여러분이 그렇게 하는 것을 권장합니다.

00:10:23.870 --> 00:10:25.190
그래서 일단 당신이 그렇게,

00:10:25.190 --> 00:10:26.825
실제로 앱을 빌드합니다.

00:10:26.825 --> 00:10:31.130
몇 가지 추가 메타데이터 및
코드는 앱에 포함됩니다.

00:10:31.130 --> 00:10:33.580
그래서 우리는 볼 수 있고
개체를 추적합니다.

00:10:33.580 --> 00:10:36.140
>> 이 동안 한 가지
구축하고 배포하는 것은

00:10:36.140 --> 00:10:38.030
우리는 에서 실행
그것을 의미 하는 시뮬레이터

00:10:38.030 --> 00:10:40.520
이것의 전체 마력을 가지고있다.

00:10:40.520 --> 00:10:45.320
내가 하고 있는 게 괜찮아
및 내 장치에 프로파일링,

00:10:45.320 --> 00:10:49.150
또는 그것을 하는 것이 더 낫다.
실제 아이폰, 예를 들어?

00:10:49.150 --> 00:10:50.570
>> 당신이 있기 때문에 좋은 질문입니다

00:10:50.570 --> 00:10:52.340
프로파일링의 다른 종류를 할 수 있습니다.

00:10:52.340 --> 00:10:52.940
>> 흥미롭군요.

00:10:52.940 --> 00:10:54.230
>> CPU를 프로파일링하는 경우

00:10:54.230 --> 00:10:56.480
그것은 좋은 생각이 아니다
시뮬레이터에서 할 수 있습니다.

00:10:56.480 --> 00:10:58.820
왜냐하면 당신은 하지 않았기 때문에
장치의 전체 전원을 공급합니다.

00:10:58.820 --> 00:11:01.340
하지만 메모리를 하고 있다면
프로파일러 및 할당,

00:11:01.340 --> 00:11:04.355
당신은 같은 문제를 얻을 것이다
시뮬레이터 및 장치에서.

00:11:04.355 --> 00:11:04.730
>> 완벽합니다.

00:11:04.730 --> 00:11:10.300
>> 나는 노트북에서 그것을 하고 좋아한다.
그것은 단지 빨리 시작하기 때문에.

00:11:10.300 --> 00:11:13.010
코드를 번역하지 않습니다.

00:11:13.010 --> 00:11:16.085
기본 지침에 그냥
즉시 시뮬레이션하고 실행합니다.

00:11:16.085 --> 00:11:18.470
따라서 메모리 프로파일링을 할 때마다

00:11:18.470 --> 00:11:20.180
앱을 여러 번 실행하는 경우

00:11:20.180 --> 00:11:23.045
그래서 당신은 그것을 좋아할 거야.

00:11:23.045 --> 00:11:25.085
나도 같은 테스트를 할 수 있습니다.

00:11:25.085 --> 00:11:27.980
그래서 세부 정보 페이지를 한 번 열었습니다.

00:11:27.980 --> 00:11:29.840
그리고 당신은 여기에이 작은 피크를 참조하십시오.

00:11:29.840 --> 00:11:33.590
그것은 우리가 우리의
메모리 사용량이 크게 사용됩니다.

00:11:33.590 --> 00:11:35.915
하지만 당신은 이것을 볼 수 없습니다.
메모리가 증가합니다.

00:11:35.915 --> 00:11:38.510
그것은 여전히 가장 큰 개체처럼

00:11:38.510 --> 00:11:40.730
시스템 트리와 어딘가에 여기에.

00:11:40.730 --> 00:11:43.155
내가 그것을 몇 번 더 할 수 있습니다.

00:11:43.155 --> 00:11:45.815
나는 그것을 다시 증가시킬 것이다.

00:11:45.815 --> 00:11:47.610
스파이크는 여기,

00:11:47.610 --> 00:11:49.735
하지만 여기에 스파이크가 표시되지 않습니다.

00:11:49.735 --> 00:11:53.330
이는 우리가 할당할 때
네이티브 메모리에 뭔가,

00:11:53.330 --> 00:11:56.220
반영되지 않습니다.
관리 되는 세계에서,

00:11:56.220 --> 00:11:59.419
그러나 우리는 총 메모리가
성장하고 거래하지,

00:11:59.419 --> 00:12:00.720
가장 중요한 것입니다.

00:12:00.720 --> 00:12:01.455
>> 나는 볼 수 있습니다.

00:12:01.455 --> 00:12:04.015
이 스냅샷으로 돌아옵니다.

00:12:04.015 --> 00:12:05.710
메모리 스냅샷이 실제로 실행됩니다.

00:12:05.710 --> 00:12:07.875
가비지 콜렉션
관리되는 사이트에서 볼 수 있습니다.

00:12:07.875 --> 00:12:10.195
그래서 우리는이 스냅 샷을 수행합니다.
나는 또 다른 하나를 할 수 있습니다.

00:12:10.195 --> 00:12:11.755
나중에 설명하겠습니다.

00:12:11.755 --> 00:12:14.500
을 사용하여 종료 신호를 처리합니다.

00:12:14.500 --> 00:12:17.475
그러나 기본적으로, 지금은 깨끗한 메모리입니다.

00:12:17.475 --> 00:12:19.605
우리는 확인 합니다.
우리의 쓰레기 수집기

00:12:19.605 --> 00:12:22.270
이미 실행 및 할당
획득한 모든 개체입니다.

00:12:22.270 --> 00:12:23.920
우리는 여전히 거기에 추억을 참조하십시오.

00:12:23.920 --> 00:12:25.845
그래서 여전히 내려갔습니다.

00:12:25.845 --> 00:12:28.755
여기서 무슨 일이 일어나고 있는지 알기 위해,

00:12:28.755 --> 00:12:32.005
우리는 여기 로 가서
필터 버튼을 사용합니다.

00:12:32.005 --> 00:12:35.265
당사는
R 오브젝트만,

00:12:35.265 --> 00:12:38.110
나는 또한에보고 싶어
라이브 개체를 여기에 있습니다.

00:12:38.110 --> 00:12:40.980
그래서 나는이 "적용"을 명중
버튼, 그리고 짜잔,

00:12:40.980 --> 00:12:43.575
우리는 두 개의 세부 컨트롤러를 참조하십시오
메모리에 매달려,

00:12:43.575 --> 00:12:47.160
나는 하지 않지만
세부 정보를 제자리에 배치할 수 있습니다.

00:12:47.160 --> 00:12:48.570
>> 슈퍼 샘플, 그래서 당신은 말했다,

00:12:48.570 --> 00:12:50.289
내 이름 공간에서 모든 것을 찾아,

00:12:50.289 --> 00:12:51.610
그에 필터링합니다.

00:12:51.610 --> 00:12:54.820
말 그대로 우리가 여기에서 보는 것
는 세부 보기 컨트롤러 2입니다.

00:12:54.820 --> 00:12:55.225
>> 그렇습니다.

00:12:55.225 --> 00:12:56.650
그러나 그것은 사라져야합니다.

00:12:56.650 --> 00:13:00.015
>> 가장 큰 것부터 시작하겠다
이 페이지에 있는 개체입니다.

00:13:00.015 --> 00:13:00.280
>> 그렇습니다.

00:13:00.280 --> 00:13:02.865
그것은 뿐만 아니라 안 드 로이드에 대 한 사실이다.

00:13:02.865 --> 00:13:04.030
당신은 단지 활동을 검색,

00:13:04.030 --> 00:13:05.395
모델 보기 또는 무엇이든

00:13:05.395 --> 00:13:07.875
왜냐하면 일단 당신이 보기를 가지고 있기 때문입니다.
거기에 매달려 모델,

00:13:07.875 --> 00:13:11.320
모든 것을 연결하기 시작합니다.
다른 개체입니다.

00:13:11.320 --> 00:13:13.380
모든 서비스, 모든 바인딩,

00:13:13.380 --> 00:13:16.605
모든 UI를 사용할 수 있습니다.
많은 메모리를 얻을 수 있습니다.

00:13:16.605 --> 00:13:17.500
>> 그것을 얻었다.

00:13:17.500 --> 00:13:19.465
>> 그것이 참된 것을 보여 드리겠습니다.

00:13:19.465 --> 00:13:23.260
나는 그것을 하나 더 열 것이다
"스냅샷"을 누르고 있습니다.

00:13:23.260 --> 00:13:25.455
여기서는 세 가지 인스턴스를 볼 수 있습니다.

00:13:25.455 --> 00:13:28.569
나는 "스냅 샷"을 치는, 다시 갈거야,

00:13:28.569 --> 00:13:30.030
그리고 그것은 메모리에 남아 있습니다.

00:13:30.030 --> 00:13:30.660
>> 당신을 얻었다.

00:13:30.660 --> 00:13:32.500
이 메모리 문제를 해결해 보겠습니다.

00:13:32.500 --> 00:13:33.700
>> 준비되었습니다.

00:13:33.700 --> 00:13:36.470
>> 어떻게 고칠 수 있을까요?

00:13:41.220 --> 00:13:43.525
이것은 세부 정보 페이지입니다.

00:13:43.525 --> 00:13:45.460
그래서 우리는 구독을 취소해야합니다
어떤 이벤트에서.

00:13:45.460 --> 00:13:49.325
>> 당신을 얻었다. 그래서 여기에 진짜 문제
이벤트 구독했습니다.

00:13:49.325 --> 00:13:49.970
>> 예.

00:13:49.970 --> 00:13:52.135
>> 그럼 우리는 구독을 취소해야 합니까?

00:13:52.135 --> 00:13:54.550
>> 맞습니다. 이
좋은 방법입니다.

00:13:54.550 --> 00:13:56.370
이 플러스 동등한 볼 때마다,

00:13:56.370 --> 00:13:59.490
당신은 단지 검색
마이너스 가 동일합니다.

00:13:59.490 --> 00:14:01.980
그렇지 않은 경우,
를 소개해야 합니다.

00:14:01.980 --> 00:14:02.595
>> 그것을 얻었다.

00:14:02.595 --> 00:14:05.020
>> 이것은 첫 번째 표시입니다.
메모리 누수가 있는지 확인할 수 있습니다.

00:14:05.020 --> 00:14:05.340
>> 그것을 얻었다.

00:14:05.340 --> 00:14:10.460
유일한 예외는
당신은 메인 페이지에 가입,

00:14:10.460 --> 00:14:12.285
여기에 우리의 메인 페이지처럼,

00:14:12.285 --> 00:14:14.725
그리고 당신은이 페이지가 확신

00:14:14.725 --> 00:14:18.010
갈 수 없습니다.
언제 든 지 곧 멀리.

00:14:18.010 --> 00:14:20.115
>> 어쩌면 당신은 그것을 가지고
앱 대리자 수준입니다.

00:14:20.115 --> 00:14:21.530
너는 좋아, 난 실제로
이 것을 원한다.

00:14:21.530 --> 00:14:23.290
모든 시대를 위한 글로벌 이벤트입니다.

00:14:23.290 --> 00:14:25.845
그러나 앱이
배경으로 이동,

00:14:25.845 --> 00:14:27.295
또한 구독을 취소해야 합니다.

00:14:27.295 --> 00:14:28.345
>> 그건 사실이야.

00:14:28.345 --> 00:14:28.675
>> 그렇습니다.

00:14:28.675 --> 00:14:29.700
>> 실행하지 않습니다.

00:14:29.700 --> 00:14:31.750
>> 그래서 지금 당신은 말하고있다
표시가 되면

00:14:31.750 --> 00:14:33.855
그것은 가입하고 사라집니다,

00:14:33.855 --> 00:14:35.935
구독을 취소한 다음
위쪽을 제거합니다.

00:14:35.935 --> 00:14:37.990
>> 예, 클라우드에서 제거했습니다.

00:14:37.990 --> 00:14:39.710
왜냐하면 우리가 원하기 때문입니다.
매번 실행

00:14:39.710 --> 00:14:42.040
우리가 사라질 때마다 나타납니다.

00:14:42.040 --> 00:14:43.850
플러스 가입과 동일,

00:14:43.850 --> 00:14:45.640
마이너스 구독 취소와 동일합니다.

00:14:45.640 --> 00:14:48.735
아무것도 복잡하지, 그냥 원하는

00:14:48.735 --> 00:14:52.045
필요하지 않은지 확인하십시오.
당신이 그것을 통해 이동하면 악기.

00:14:52.045 --> 00:14:52.720
>> 멋지다.

00:14:52.720 --> 00:14:55.110
>> 그래서 나는 똑같은 일을 하고 있다.

00:14:55.110 --> 00:14:59.490
세부 사항에 가고,
그것이 참임을 보여준다.

00:14:59.490 --> 00:15:02.980
스냅샷 생성,
내 이벤트로 필터링합니다.

00:15:02.980 --> 00:15:05.300
미안해요. 방금 클릭했습니다.

00:15:08.700 --> 00:15:12.170
라이브 개체를 살펴보겠습니다.

00:15:12.420 --> 00:15:15.345
우리는 세부 사항을 볼 수 있어야합니다
왜냐하면 우리는 현재

00:15:15.345 --> 00:15:17.475
세부 정보 페이지. 우리는 돌아갈거야.

00:15:17.475 --> 00:15:18.990
우리는 "스냅 샷"을 명중

00:15:18.990 --> 00:15:20.880
그리고 우리는 여기에 무엇을 기대합니까?

00:15:20.880 --> 00:15:23.715
첫째, 가비지 수집은 실제로

00:15:23.715 --> 00:15:26.065
이러한 개체를
종료 신호,

00:15:26.065 --> 00:15:27.625
하지만 두 번째는 1을 큐해야,

00:15:27.625 --> 00:15:30.340
아니면 아마 여전히 같은 하나.

00:15:30.340 --> 00:15:31.570
>> 이제 는 사라졌습니다.

00:15:31.570 --> 00:15:33.910
>> 예. 그래서 내가 에 대해 이야기 하자

00:15:33.910 --> 00:15:36.940
에서 종료 큐
두 번째, 하지만 지금은,

00:15:36.940 --> 00:15:40.395
아이디어는 우리가
우리의 세부 사항 보기를 잃었다,

00:15:40.395 --> 00:15:43.135
그리고 우리의 메모리 사용량이 내려오고.

00:15:43.135 --> 00:15:43.770
>> 아름답습니다.

00:15:43.770 --> 00:15:46.150
메모리 누수 문제를 해결하는 방법입니다.

00:15:46.150 --> 00:15:49.420
>> 그렇습니다. 구독했습니다.
이벤트. 이벤트 구독을 취소합니다.

00:15:49.420 --> 00:15:51.630
>> 엄지 손가락의 기본 규칙.

00:15:51.630 --> 00:15:54.915
>> 그건 정말 재밌네요
하나는 두 가지 문제가 발생하기 때문입니다.

00:15:54.915 --> 00:15:56.800
우리는 당신이 살아 유지것을 보았다

00:15:56.800 --> 00:15:58.750
왜냐하면 이러한 이벤트는 계속 진행하기 때문입니다.

00:15:58.750 --> 00:16:00.715
그래서 지금 당신은 발사하고 있습니다
여러 번,

00:16:00.715 --> 00:16:04.290
뿐만 아니라, 그 페이지에 아무것도
메모리에 남을 것입니다.

00:16:04.290 --> 00:16:06.685
>> 맞습니다. 그 이유는
우리는 무거운 이미지를 추가,

00:16:06.685 --> 00:16:08.205
그리고 그것은 여전히 메모리에 있습니다.

00:16:08.205 --> 00:16:08.830
>> 그것을 얻었다.

00:16:08.830 --> 00:16:10.570
>> 악기를 보여드리겠습니다.

00:16:10.570 --> 00:16:13.390
그래서 소개할게요.
메모리 누수로 돌아갑니다.

00:16:13.390 --> 00:16:13.800
>> 물론입니다.

00:16:13.800 --> 00:16:15.985
>> 구독 취소 이벤트를 제거하기만 하면 됩니다.

00:16:15.985 --> 00:16:18.435
시뮬레이터에 배포할 예정입니다.

00:16:18.435 --> 00:16:21.330
악기는 매우 쉽게 작동합니다.

00:16:21.330 --> 00:16:23.355
당신은 에서 대상을 선택

00:16:23.355 --> 00:16:25.930
시뮬레이터와
응용 프로그램, 그리고 그게 다야.

00:16:25.930 --> 00:16:28.435
시작하기만 하면 됩니다.
인스트루먼트 프로파일러에

00:16:28.435 --> 00:16:30.175
그것은 자마린 응용 프로그램이지만,

00:16:30.175 --> 00:16:32.150
당신은 바로 시작할 수 있습니다
인스트루먼트에서,

00:16:32.150 --> 00:16:33.615
자마린에 대해 아무것도 모른다.

00:16:33.615 --> 00:16:35.310
>> 인스트루먼트는 어디에서 왔는가?

00:16:35.310 --> 00:16:38.709
>> 애플. 그것은 사과입니다
도구, Xcode와 함께 제공,

00:16:38.709 --> 00:16:41.950
그리고 그것은 많은
그 안에 툴링.

00:16:41.950 --> 00:16:43.450
>> 그래서 그냥 내장
이미

00:16:43.450 --> 00:16:45.415
X코드가 설치되었습니까? 그래서
모두가 이게?

00:16:45.415 --> 00:16:46.015
>> 무료입니다.

00:16:46.015 --> 00:16:48.925
>> 무료입니다. 멋진. 그래서 누구든
지금 바로 이것을 사용할 수 있습니까?

00:16:48.925 --> 00:16:53.880
>> 예. 당신은 실제로 할 수 있습니다
이러한 활동을 참조하십시오.

00:16:53.880 --> 00:16:57.920
관리되는 관리로 만든
세부 활동과 같은 세계,

00:16:57.920 --> 00:17:00.525
여전히 표시됩니다.
네이티브 개체에 의해.

00:17:00.525 --> 00:17:00.930
>> 그것을 얻었다.

00:17:00.930 --> 00:17:02.855
>> 그래서 그 개체를 찾아 보자.

00:17:02.855 --> 00:17:07.240
우리는 그것을 세부 정보 보기 컨트롤러라고 합니다.

00:17:07.240 --> 00:17:09.595
그 중 몇 가지를 만들어 보겠습니다.

00:17:09.595 --> 00:17:11.030
이것은 실제로입니다.
정말 멋진 때문에

00:17:11.030 --> 00:17:12.240
나는 악기를 사용한 적이 없다,

00:17:12.240 --> 00:17:15.295
몇 년 동안 아무에게도 말하지 마십시오.

00:17:15.295 --> 00:17:18.440
나는 모든 사람들이 주는 생각하지 않는다
나에게 세부 사항. 그래서 존재?

00:17:18.440 --> 00:17:20.070
>> 네, 존재합니다.

00:17:20.070 --> 00:17:22.335
의미가 있는 >>
자마린은 원주민이기 때문에,

00:17:22.335 --> 00:17:23.770
따라서 네이티브 개체를 만듭니다.

00:17:23.770 --> 00:17:26.380
>> 예. 당신은 할 필요가 없습니다

00:17:26.380 --> 00:17:27.885
여기에 메모리 스냅샷

00:17:27.885 --> 00:17:29.975
왜냐하면 우리는
가비지 수집은 여기에 있습니다.

00:17:29.975 --> 00:17:33.780
IOS는 계층 구조를 사용합니다.
자동 참조 카운터를 참조하십시오.

00:17:33.780 --> 00:17:35.605
기본적으로, 언제,
개체를 만들고,

00:17:35.605 --> 00:17:37.065
카운터를 증분하고,

00:17:37.065 --> 00:17:39.550
사용하지 않거나 사용하지 않을 때마다

00:17:39.550 --> 00:17:42.505
의 범위에서 벗어난다.
카운터를 감소시가지는 않습니다.

00:17:42.505 --> 00:17:43.845
카운터가 0이 되면

00:17:43.845 --> 00:17:46.495
개체가 가비지이며
수집할 수 있습니다.

00:17:46.495 --> 00:17:48.075
따라서 시작하기가 매우 쉽습니다.

00:17:48.075 --> 00:17:51.735
응용 프로그램과 악기
이 버튼을 클릭하기만 하면 됩니다.

00:17:51.735 --> 00:17:53.505
그것은 응용 프로그램을 시작,

00:17:53.505 --> 00:17:55.860
여기에 메모리 사용량을 보여 주며 여기에 있습니다.

00:17:55.860 --> 00:17:57.690
세부 정보 페이지를 열어 보겠습니다.

00:17:57.690 --> 00:18:00.425
>> 당신을 얻었다. 악기
애플에서 온다?

00:18:00.425 --> 00:18:02.040
>> 인스트루먼트는 애플에서 온다.

00:18:02.040 --> 00:18:03.350
그것은 애플에서 무료 도구입니다.

00:18:03.350 --> 00:18:04.490
지금 바로 사용할 수 있습니다.

00:18:04.490 --> 00:18:05.390
>> 멋지다.

00:18:05.390 --> 00:18:06.970
>> 당신은 우리도

00:18:06.970 --> 00:18:10.140
이 메모리 풋프린트 오른쪽
여기에서 일단 우리가 세부 정보 페이지를 엽니 다.

00:18:10.140 --> 00:18:12.120
한 번 더 열어 봅시다.

00:18:12.120 --> 00:18:15.140
>> 이것은 매우 유사합니다.
자마린 프로파일러에,

00:18:15.140 --> 00:18:16.870
그러나 이것은 우리에게 보여줄 것입니다.

00:18:16.870 --> 00:18:19.240
모두를 위한 네이티브 스택
의도와 목적을 가지고 있습니다.

00:18:19.240 --> 00:18:21.500
>> 맞습니다. 불행하게도, 그것은

00:18:21.500 --> 00:18:24.090
아무것도 모른다
자마린과 관리 세계,

00:18:24.090 --> 00:18:27.025
그래서 당신은 볼 수 없습니다
생성된 관리 개체입니다.

00:18:27.025 --> 00:18:28.990
그래서 당신은 스파이크를 참조하십시오,

00:18:28.990 --> 00:18:30.850
그리고 당신은 그것이 사라지지 않는 것을 볼 수 있습니다.

00:18:30.850 --> 00:18:33.350
그래서 세 번째로 해보자.

00:18:33.350 --> 00:18:35.145
그냥 개체를 표시합니다.

00:18:35.145 --> 00:18:38.455
그럼 보자. 있다.
작은 필터 버튼.

00:18:38.455 --> 00:18:43.170
우리는 여기에 모든 할당으로 이동,

00:18:43.170 --> 00:18:45.165
그리고 "세부 사항"을 누르고.

00:18:45.165 --> 00:18:45.820
>> 좋아.

00:18:45.820 --> 00:18:47.555
>> 이 페이지는 바로 여기 세 페이지입니다.

00:18:47.555 --> 00:18:48.660
그들은 모두 기억에 있어,

00:18:48.660 --> 00:18:50.650
메모리에 할당됩니다.

00:18:50.650 --> 00:18:54.070
나는 우리가 어떻게 deallocate를 보여주는 지 보여주지 않을 것이다.
그것은 같은 수정이기 때문에,

00:18:54.070 --> 00:18:57.020
우리는 단지 구독을 취소,
관리되는 세계 구독 취소

00:18:57.020 --> 00:19:00.120
개체에서. 개체
쓰레기로 간주됩니다.

00:19:00.120 --> 00:19:04.660
그런 다음 우리의 쓰레기 수집기
해당 정보를 수집합니다.

00:19:04.660 --> 00:19:06.460
그런 다음 네이티브는 수집 할 수 있습니다
왜냐하면 아무것도 없기 때문입니다.

00:19:06.460 --> 00:19:08.490
관리 세계에서
이미 그것을 들고.

00:19:08.490 --> 00:19:10.780
>> 의미가 있습니다. 그래서 매우
훨씬 같은 수정,

00:19:10.780 --> 00:19:12.255
그러나 그것을 감지하는 또 다른 방법.

00:19:12.255 --> 00:19:15.045
>> 맞습니다. 그래서 이것은

00:19:15.045 --> 00:19:19.345
차이점에 대해
관리 및 네이티브 세계.

00:19:19.345 --> 00:19:22.120
내 다음 예제는
주로 관리에 대해

00:19:22.120 --> 00:19:25.320
당신이 할 수 있기 때문에 세계
어떤 에서 문제를 소개,

00:19:25.320 --> 00:19:26.905
그리고 그것은 자마린과 관련이 없습니다.

00:19:26.905 --> 00:19:29.570
당신이 말했듯이, 그것은 될 수 있습니다
정적 이벤트에 가입하고,

00:19:29.570 --> 00:19:32.745
그것은 소개 할 수 있습니다
어디서나 문제가 발생합니다.

00:19:32.745 --> 00:19:35.410
그래서 다음 것은

00:19:35.410 --> 00:19:38.210
구독에 대해, 그리고
구독취소 없이.

00:19:38.210 --> 00:19:39.315
그러나이 경우,

00:19:39.315 --> 00:19:42.820
우리는 실제로
암시적으로 구독하고,

00:19:42.820 --> 00:19:44.480
우리는 플러스 동등한 을 사용하지 않습니다.

00:19:44.480 --> 00:19:46.015
그래서 찾기 가 더 어렵다.

00:19:46.015 --> 00:19:48.710
이 경우, 우리는 이 것을 실행합니다.
알림 센터를

00:19:48.710 --> 00:19:51.795
앱이 회전될 때마다 식별합니다.

00:19:51.795 --> 00:19:53.695
이 관찰자에 추가합니다.

00:19:53.695 --> 00:19:57.525
이 센터는 단일 기본 센터입니다.

00:19:57.525 --> 00:19:59.700
우리는 말하고, 나는 그것을 얻고 싶어

00:19:59.700 --> 00:20:02.595
모든 정보
방향이 변경되고

00:20:02.595 --> 00:20:04.140
그리고 여기에 내 처리기가 있습니다.

00:20:04.140 --> 00:20:04.650
>> 그것을 얻었다.

00:20:04.650 --> 00:20:06.690
>> 핸들러 자체,
그것은 매우 간단합니다.

00:20:06.690 --> 00:20:08.125
우리는 거기서 아무것도 하지 않을 거야.

00:20:08.125 --> 00:20:11.665
디버깅하기 위해 인쇄하겠습니다.

00:20:11.665 --> 00:20:12.465
>> 그것을 얻었다.

00:20:12.465 --> 00:20:15.525
>>
연결 물건 때문에

00:20:15.525 --> 00:20:18.630
우리는 다른 소개하고 싶다
메모리 문제의 종류.

00:20:18.630 --> 00:20:21.525
나는 또한 우리의 코멘트를
우리가 필요하지 않기 때문에 이미지

00:20:21.525 --> 00:20:24.430
메모리를 표시하려면
발자국, 그것은 거기.

00:20:24.430 --> 00:20:28.390
우리는 단지 실험할 것입니다.
UI 뷰 컨트롤러 및 보기입니다.

00:20:28.390 --> 00:20:30.650
>> 아주 멋지다. 그래서 이것
매우 유사합니다.

00:20:30.650 --> 00:20:32.870
그러나 이 패턴은
가입할 수 있습니다.

00:20:32.870 --> 00:20:34.605
어쩌면 행동에 전달.

00:20:34.605 --> 00:20:38.340
또는이 경우, 그것은 무엇을
그것은 여기에 당신의 콜백말한다.

00:20:38.340 --> 00:20:40.010
대리자는 매우 유사합니다.

00:20:40.010 --> 00:20:41.115
나는이 패턴을 생각합니다.

00:20:41.115 --> 00:20:42.480
그래서 그것은 단지 뭔가
나도 익숙해.

00:20:42.480 --> 00:20:45.590
>> 맞습니다. 그건

00:20:45.590 --> 00:20:47.864
그들의 주요 아이디어는 때문에
구독할 때,

00:20:47.864 --> 00:20:51.405
참조를 전달하는 경우
UI 뷰 컨트롤러도 마찬가지입니다.

00:20:51.405 --> 00:20:53.425
이것은 단지 다른
참조를 전달하는 방법입니다.

00:20:53.425 --> 00:20:55.260
그것은 때때로 그 명백한 아니다.

00:20:55.260 --> 00:20:57.955
그래서 우리는 우리의 가입을 가지고,
그것은 여기 실행.

00:20:57.955 --> 00:20:59.305
그것은 단지 한 번 실행됩니다.

00:20:59.305 --> 00:21:01.780
닫고 다시 열어 봅시다.

00:21:01.780 --> 00:21:03.525
이제 두 번 클릭합니다.

00:21:03.525 --> 00:21:05.230
내가 당신에게 이것을 보여 줄 수 있도록 명확히 하자.

00:21:05.230 --> 00:21:07.240
한 번 회전, 두 가지를 받고,

00:21:07.240 --> 00:21:11.655
즉, 일부 UI 보기가 있습니다.
컨트롤러가 메모리에 매달려,

00:21:11.655 --> 00:21:13.535
첫 번째 를 처리하는 동안.

00:21:13.535 --> 00:21:13.980
>> 그것을 얻었다.

00:21:13.980 --> 00:21:15.430
>>

00:21:15.430 --> 00:21:19.660
일부 데이터베이스 업데이트 논리
또는 HTTP 요청 초과 근무.

00:21:19.660 --> 00:21:21.340
사용 일처럼,

00:21:21.340 --> 00:21:24.810
앱이 죽지 않습니다.
비활성화하고 다시 활성화할 수 있습니다.

00:21:24.810 --> 00:21:26.740
그것은이 모든 것을해야합니다
메모리에 여전히 보기,

00:21:26.740 --> 00:21:28.265
그리고 일주일에, 그것은 충돌 할 수 있습니다.

00:21:28.265 --> 00:21:28.785
>> 그렇습니다.

00:21:28.785 --> 00:21:30.105
>> 어떻게 고칠 수 있을까요?

00:21:30.105 --> 00:21:31.550
그것은 매우 쉽습니다.

00:21:31.550 --> 00:21:34.145
>> 나는 당신이 구독을 취소한다고 가정?

00:21:34.145 --> 00:21:35.835
>> 맞습니다. 그것은 더 어렵다

00:21:35.835 --> 00:21:38.685
구독을 취소하기 때문에
플러스 가 없습니다.

00:21:38.685 --> 00:21:42.010
내가 당신도 보여 보자
실제로 여기에 보내.

00:21:42.010 --> 00:21:43.365
그래서 구독할 때,

00:21:43.365 --> 00:21:46.395
메서드 이름을 전달하고 있습니다.

00:21:46.395 --> 00:21:48.215
실제로 작업을 전달하고 있습니다.

00:21:48.215 --> 00:21:51.745
컴파일러는
그 숨기기의 좋은 일,

00:21:51.745 --> 00:21:54.150
우리의 삶을 더 쉽게 만들어 주시고 있습니다.

00:21:54.150 --> 00:21:55.945
>> 컴파일러는 매우 좋습니다.

00:21:55.945 --> 00:21:57.255
>> 우리에게 아주 좋은.

00:21:57.255 --> 00:22:00.415
이것이 바로 우리가 개발자가 되는 것을 좋아하는 이유입니다.

00:22:00.415 --> 00:22:04.360
그래서 실제로 요청합니다.
NSNotification를 통해 작업을 수행합니다.

00:22:04.360 --> 00:22:07.840
그래서 여기에 NSNotification에 서명하고 있습니다.

00:22:07.840 --> 00:22:13.365
그런 다음 이 표기어를 사용하여
이 개체를 붙여넣습니다.

00:22:13.365 --> 00:22:16.560
따라서 메서드 이름 대신

00:22:16.560 --> 00:22:19.225
우리는 실제로 통과하고 있습니다.
액션과 오브젝트,

00:22:19.225 --> 00:22:20.960
참조를 보유하는 경우

00:22:20.960 --> 00:22:23.610
이러한 메타데이터는
을 사용하여 메서드를 호출합니다.

00:22:23.610 --> 00:22:26.555
그래서 우리는 방법을 통과하지 않습니다,
그것은 단지 참조입니다.

00:22:26.555 --> 00:22:30.060
우리의 경우, 가장 중요한
이 참조를 전달할 때 부품,

00:22:30.060 --> 00:22:32.155
UIV 컨트롤러인 데다,

00:22:32.155 --> 00:22:34.170
그리고 그것이 기억에 남는 이유입니다.

00:22:34.170 --> 00:22:35.260
>> 그것을 얻었다.

00:22:35.260 --> 00:22:35.865
>> 좋아.

00:22:35.865 --> 00:22:36.670
>> 의미가 있습니다. 예.

00:22:36.670 --> 00:22:38.595
>> 세부 정보를 표시하지 않습니다.

00:22:38.595 --> 00:22:40.390
메모리가
누출은 여전히 존재합니다.

00:22:40.390 --> 00:22:43.975
왜냐하면 우리는 이것들을 보았기 때문입니다.
시간을 절약할 수 있습니다.

00:22:43.975 --> 00:22:45.500
에 초점을 맞추고 싶습니다.

00:22:45.500 --> 00:22:48.830
최악의 시나리오는
알고 있어야 합니다.

00:22:48.830 --> 00:22:54.250
원주민 세계가 존재하지 않는 경우
잘 관리 세계와 함께.

00:22:54.250 --> 00:22:56.280
>> 당신을 얻었다. 때
두 세계가 충돌합니다.

00:22:56.280 --> 00:23:00.265
>> 언제든 맞기 때문에 맞습니다.
우리는 생성 된 개체를 관리했습니다.

00:23:00.265 --> 00:23:02.155
생성된 네이티브 개체가 있습니다.

00:23:02.155 --> 00:23:05.690
그리고 그/ 그녀가 시도
네이티브 개체 할당 배치,

00:23:05.690 --> 00:23:07.495
우리의 관리 세계는 생각,

00:23:07.495 --> 00:23:09.330
나는 아직도이 객체로 끝나지 않았다.

00:23:09.330 --> 00:23:11.270
잠깐 만요, 하지 마십시오.

00:23:11.270 --> 00:23:13.765
개체를 수집하기 때문에
나는 아직도 그와 함께 일하고 있다.

00:23:13.765 --> 00:23:14.525
>> 당신을 얻었다.

00:23:14.525 --> 00:23:15.805
>> 반대일 수도 있습니다.

00:23:15.805 --> 00:23:19.130
네이티브 월드
개체를 만들 수 있습니다.

00:23:19.130 --> 00:23:20.265
그리고 지금 관리 된 세계는 생각,

00:23:20.265 --> 00:23:22.450
아직 끝나지 않았습니다.
거기, 그래서 보류하자.

00:23:22.450 --> 00:23:25.015
다른
이 개체에 대한 참조,

00:23:25.015 --> 00:23:29.015
그것은 그것을 보유 할 수 있습니다, 그것은 할 수
쓰레기로 보관하지 않습니다.

00:23:29.015 --> 00:23:29.820
>> 당신을 얻었다.

00:23:29.820 --> 00:23:31.460
>> 나는 그것을 설명 할 수

00:23:31.460 --> 00:23:34.640
이 작은 작은 이미지
불멸의 물건의.

00:23:34.640 --> 00:23:37.230
그래서 불멸을 만들지 마십시오
개체. 그들은 나쁘다.

00:23:37.230 --> 00:23:38.435
>> 멋지게 들립니다.

00:23:38.435 --> 00:23:39.963
>> 그렇습니다.

00:23:39.963 --> 00:23:43.355
그것은 당신이 때 발생
이 두 세계를 가지고 있다.

00:23:43.355 --> 00:23:46.925
네이티브, 당신은 오른쪽에 볼 수 있습니다
네이티브 뷰 컨트롤러 및 뷰,

00:23:46.925 --> 00:23:49.640
왼쪽에서 당신은

00:23:49.640 --> 00:23:52.580
관리 세계 C 샤프 누구입니다
컨트롤러 및 뷰보기.

00:23:52.580 --> 00:23:55.640
당신은 무엇을 모르는 때마다
네이티브 세계에서 일어나고,

00:23:55.640 --> 00:23:58.070
수집할 수 없습니다.
이 세상에서 온 것입니다.

00:23:58.070 --> 00:24:00.905
한 가지 예를 보여드리겠습니다.
어떻게 할 수 있습니다.

00:24:00.905 --> 00:24:03.275
그래서 내 예에서,

00:24:03.275 --> 00:24:07.235
여기에 작은 것을 추가하고 싶습니다.
작은 버튼 "저장",

00:24:07.235 --> 00:24:11.375
그냥 닫고 싶어
사용자가 도달하면 볼 수 있습니다.

00:24:11.375 --> 00:24:13.925
가정해 봅시다.
"저장" 버튼도

00:24:13.925 --> 00:24:17.330
일부 저장 논리 데이터베이스
또는 HTTP는 무엇이든 호출,

00:24:17.330 --> 00:24:19.055
그냥 돌아가지 않을

00:24:19.055 --> 00:24:22.145
실제로 실행됩니다.
몇 가지 추가 작업.

00:24:22.145 --> 00:24:22.775
>> 좋아.

00:24:22.775 --> 00:24:24.980
이 버튼의 세부 사항으로 >

00:24:24.980 --> 00:24:26.300
핸들러에 보냅니다.

00:24:26.300 --> 00:24:31.205
이 처리기는
이 컨트롤러를 닫으십시오.

00:24:31.205 --> 00:24:33.395
>> 나에게 완벽하게 합법적인 것 같습니다.

00:24:33.395 --> 00:24:35.255
>> 예. 소개해 드리겠습니다
메모리 누수.

00:24:35.255 --> 00:24:36.230
>> 좋아.

00:24:36.230 --> 00:24:42.515
>> 넌 나쁘다. 그것은 불행하게도 것입니다
그리고 그것은 일반적인 패턴입니다.

00:24:42.515 --> 00:24:45.005
우리는 어떤이 없습니다
여기에 같은 정적 이벤트.

00:24:45.005 --> 00:24:47.195
우리는 어떤이 없습니다
여기에 같은 단일 톤.

00:24:47.195 --> 00:24:49.025
우리는 단지 여기에이 버튼을 유지,

00:24:49.025 --> 00:24:51.650
이것은 단지 로컬 항목입니다.

00:24:51.650 --> 00:24:54.260
좋아 제임스, 이제 우리는
단추를 만들고

00:24:54.260 --> 00:24:56.735
우리는 그것을 추가하고 싶습니다.
탐색 보기를 볼 수 있습니다.

00:24:56.735 --> 00:25:00.440
그래서 우리는 그것을 통해 말했다
탐색 항목도 사용하지 않습니다.

00:25:00.440 --> 00:25:05.225
정적 참조 없음
그냥 그런 식으로.

00:25:05.225 --> 00:25:08.015
이제 하위 버튼이 있습니다.
프로파일러를 시작해 봅시다.

00:25:08.015 --> 00:25:09.890
>> 예, 그리고 또 다시,
슈퍼 유사한 패턴.

00:25:09.890 --> 00:25:11.285
단추를 만들고,

00:25:11.285 --> 00:25:15.800
버튼을 추가한 다음
뷰 컨트롤러는 정상인 것 같습니다.

00:25:15.800 --> 00:25:18.185
>> 사용하지 않는 대리자가 있습니다.

00:25:18.185 --> 00:25:20.540
외부 또는 정적 참조

00:25:20.540 --> 00:25:23.225
참조를 전달하지 않습니다.
컨트롤러에서.

00:25:23.225 --> 00:25:23.750
>> 당신을 얻었다.

00:25:23.750 --> 00:25:27.090
>> 잘 작동해야 합니다.
오른쪽? 어디 한번 봅시다.

00:25:27.280 --> 00:25:32.780
그래서 프로파일러는 객체를 표시합니다

00:25:32.780 --> 00:25:34.760
맨 처음에 만들어졌고 나는

00:25:34.760 --> 00:25:37.790
추적을 시작하려고 합니다.
맨 처음에 그들을.

00:25:37.790 --> 00:25:39.530
그래서 스냅샷을 바로 숨겼습니다.

00:25:39.530 --> 00:25:42.455
이제 내 개체로만 필터링합니다.

00:25:42.455 --> 00:25:45.380
다시 매우 일반적입니다
문제 해결을 위한 패턴

00:25:45.380 --> 00:25:48.800
메모리 문제
내 개체만 볼 수 있습니다.

00:25:48.800 --> 00:25:52.235
그럼 난 한 번 거기 갔어.
이것은 내 버튼입니다.

00:25:52.235 --> 00:25:55.565
보시다시피, 이것은 새로운 컨트롤입니다.
멋지게 우리의 응용 프로그램.

00:25:55.565 --> 00:25:56.870
우리는 이것을 메모리에 가지고 있습니다.

00:25:56.870 --> 00:25:58.745
이는 사실입니다, 우리는 그것을 기대합니다.

00:25:58.745 --> 00:26:03.410
다시 가서, 하나 명중하자
한 번 더.

00:26:03.410 --> 00:26:04.430
>> 내가 알기 때문에 한 번 더.

00:26:04.430 --> 00:26:05.195
>> 한 번 더.

00:26:05.195 --> 00:26:06.380
>> 좋아, 그리고 여전히 거기.

00:26:06.380 --> 00:26:08.270
>> 한 번 더, 그것은 여전히 있다.

00:26:08.270 --> 00:26:11.030
그래서 그것을 열고 더 많은 시간을 보자.

00:26:11.030 --> 00:26:14.090
닫아 봅시다.
다른 방법으로 돌아갑니다.

00:26:14.090 --> 00:26:17.390
저장하려고, 그것은 실제로
기본적으로 동일한 작업을 수행합니다.

00:26:17.390 --> 00:26:20.090
의 "메모리를 칠 수 있습니다
스냅샷" 하나 더

00:26:20.090 --> 00:26:22.610
시간과 오 와우 우리
인스턴스가 5개 있습니다.

00:26:22.610 --> 00:26:24.920
거기에 매달려 있는 페이지
메모리를 사용하면

00:26:24.920 --> 00:26:28.130
거기에 거대한 이미지
많은 메모리를 가질 것입니다.

00:26:28.130 --> 00:26:28.550
>> 그것을 얻었다.

00:26:28.550 --> 00:26:32.615
>> 매우 일반적인 패턴입니다.

00:26:32.615 --> 00:26:36.800
왜냐하면 그것은 분명하지 않기 때문에
여기에 메모리 누수가 있습니다.

00:26:36.800 --> 00:26:39.830
여기서 문제는
해당 UI바버튼항목

00:26:39.830 --> 00:26:43.910
실제로
일부 네이티브 리소스,

00:26:43.910 --> 00:26:45.485
네이티브 리소스에 바인딩됩니다.

00:26:45.485 --> 00:26:49.100
우리가 명확하게 말하지 않는 경우
더 이상 이 버튼이 필요하지 않습니다.

00:26:49.100 --> 00:26:51.020
소개해 드립니다.
이 불멸의 대상.

00:26:51.020 --> 00:26:53.135
>> 당신을 얻었다. 그렇다면 어떻게 해야 할까요?
나는이 일을 해결?

00:26:53.135 --> 00:26:56.240
이 문제를 해결하려면 사용해 봅시다.

00:26:56.240 --> 00:26:59.900
우리의 보기사라 이벤트 및
우리의 버튼으로 뭔가를.

00:26:59.900 --> 00:27:00.150
>> 좋아.

00:27:00.150 --> 00:27:01.220
>> 그래서 우리는 두 가지 옵션이 있습니다,

00:27:01.220 --> 00:27:02.735
우리는 어느 쪽도 사용할 수 있습니다

00:27:02.735 --> 00:27:05.299
클릭한 이벤트 및
구독 및 구독 취소,

00:27:05.299 --> 00:27:07.160
그러나 우리는 다시

00:27:07.160 --> 00:27:10.400
우리가 가입 할 때 우리의 첫 번째 항목
구독취소하지 않습니다.

00:27:10.400 --> 00:27:12.560
좀 더 흥미로운 일을 해봅시다.

00:27:12.560 --> 00:27:14.030
단추를 삭제합니다.

00:27:14.030 --> 00:27:15.680
>> 나는 그것을 좋아한다. 전 입니다.
그것으로 완료, 오른쪽?

00:27:15.680 --> 00:27:18.320
>> 예, 우리는 일종의 말
관리 된 세계,

00:27:18.320 --> 00:27:20.495
"나는 버튼으로 끝났어.
폐기해 주세요."

00:27:20.495 --> 00:27:24.365
그것은 분명하지 않기 때문에
많은 전망과 래퍼

00:27:24.365 --> 00:27:26.540
자마린 아이폰 OS에서
이 삭제 방법과

00:27:26.540 --> 00:27:29.015
당신은 정말 때마다 모른다
당신은 그것을 호출해야합니다.

00:27:29.015 --> 00:27:30.815
그래서 흥미로운 경우입니다.

00:27:30.815 --> 00:27:32.975
하지만 그렇게 하자 그리고 실행 하자.

00:27:32.975 --> 00:27:34.700
그건 내가 추가 한 유일한 작업

00:27:34.700 --> 00:27:37.500
이전 응용 프로그램이 실행되기 때문에.

00:27:38.290 --> 00:27:42.530
프로파일러를 시작하고 있습니다.
그리고 동일한 사용 사례를 수행.

00:27:42.530 --> 00:27:44.000
우리는에서 개체를 추적 할 거야

00:27:44.000 --> 00:27:46.310
시작과
폐기될 수 있습니다.

00:27:46.310 --> 00:27:48.050
>> 아주 멋지다. 이것은 좋은 것입니다.

00:27:48.050 --> 00:27:49.670
그래서 당신은 당신이 말했듯이, 가질 수 있습니다,

00:27:49.670 --> 00:27:53.270
전달하는 대신
전체 작업,

00:27:53.270 --> 00:27:55.130
당신은 우리가 어떻게 비슷한 수 있습니다

00:27:55.130 --> 00:27:57.605
연결,
구독, 구독 취소,

00:27:57.605 --> 00:28:00.590
나는 그것을 생각했을 것이다
하지만 이 경우

00:28:00.590 --> 00:28:03.125
당신은 이미 그렇게했다
당신은 그것을 폐기.

00:28:03.125 --> 00:28:04.010
>> 맞습니다.

00:28:04.010 --> 00:28:04.875
>> 멋지다.

00:28:04.875 --> 00:28:08.455
우리는 하지 않기 때문에 > 예,
구독취소될 것으로 예상합니다.

00:28:08.455 --> 00:28:10.840
그것은 일종의 구독이 아니며,

00:28:10.840 --> 00:28:14.230
우리는 단지 통과하고 위임
로컬 개체 의 내부에 있습니다.

00:28:14.230 --> 00:28:16.045
알림 센터의 경우,

00:28:16.045 --> 00:28:18.790
일종의 구독이기 때문에
로컬 개체를 전달합니다.

00:28:18.790 --> 00:28:21.760
일부 정적
인스턴스 또는 싱글톤.

00:28:21.760 --> 00:28:24.760
이 경우, 우리는 단지 사용
지역 자원에서,

00:28:24.760 --> 00:28:26.395
메모리 누수가 예상되지 않습니다.

00:28:26.395 --> 00:28:26.680
>> 당신을 얻었다.

00:28:26.680 --> 00:28:28.630
>> 그러나 불행히도 나는 볼 수 있습니다

00:28:28.630 --> 00:28:32.660
이 장벽은 많은 사람들이
이러한 상황에 처하는 경우.

00:28:32.680 --> 00:28:37.530
그래서 같은 트릭을 할 수 있습니다.

00:28:37.750 --> 00:28:41.760
나는이 데이터를 저장할 수 있으면 좋겠다.

00:28:41.950 --> 00:28:46.310
그래서 우리는 단지 하나의 보기를 가지고
컨트롤러 및 대리자.

00:28:46.310 --> 00:28:48.290
의 "저장"을 칠 수 있습니다.

00:28:48.290 --> 00:28:51.215
다시 돌아가봅시다.

00:28:51.215 --> 00:28:54.005
실제로 세부 정보 페이지에 있어 보자.

00:28:54.005 --> 00:28:56.975
"메모리 스냅샷"을 누르고 하나.

00:28:56.975 --> 00:28:59.315
몇 번 더 클릭해 보겠습니다.

00:28:59.315 --> 00:29:02.735
우리는 그것에 대해 이야기 할 것이다. 그래서 우리는
여기에 하나의 인스턴스가 있습니다.

00:29:02.735 --> 00:29:10.805
"저장"을 클릭하고 "스냅샷"을 클릭합니다.
그리고 스캔이 사라집니다.

00:29:10.805 --> 00:29:12.380
그래? 메모리 누수 수정.

00:29:12.380 --> 00:29:13.250
>> 아주 멋지다. 좋은.

00:29:13.250 --> 00:29:14.900
불멸의 물체가 죽었습니다.

00:29:14.900 --> 00:29:16.445
>> 죽었다. 아주 멋지다.

00:29:16.445 --> 00:29:17.810
그렇지 않으면, 이것은 굉장합니다.

00:29:17.810 --> 00:29:20.600
그래서 매우 간단, 당신의 이벤트를 보면,

00:29:20.600 --> 00:29:22.850
뿐만 아니라 당신이 통과하는 방법을 살펴

00:29:22.850 --> 00:29:24.890
이러한 행동 주위와 심지어 나는

00:29:24.890 --> 00:29:26.870
그것에 대해 생각조차 하지 않을 것입니다.
당신과 함께 정직버튼

00:29:26.870 --> 00:29:29.315
생성자가
이 것을 전달하고 있습니다.

00:29:29.315 --> 00:29:29.600
>> 예.

00:29:29.600 --> 00:29:30.725
>> 정말 멋지다.

00:29:30.725 --> 00:29:33.350
나는 또한 추천 할 것이다

00:29:33.350 --> 00:29:36.425
우리의 개발자는 더 그것을 사용 하 여
종종 일주일에 한 번 좋아하고,

00:29:36.425 --> 00:29:39.545
모든 스프린트를 다음
메모리 사용량을 참조하고,

00:29:39.545 --> 00:29:41.585
UI 테스트 실행으로 볼 수 있습니다.

00:29:41.585 --> 00:29:45.590
그것은이 작은 보여줍니다
메모리 작업 집합을 설정합니다.

00:29:45.590 --> 00:29:48.050
그래서 당신은 단지 이상 볼
수개월이 되면

00:29:48.050 --> 00:29:51.530
아니 그것은 당신을 성장하는 경우
메모리 누수가 있을 수 있습니다.

00:29:51.530 --> 00:29:53.360
>> 당신은 iOS를 보여 주었다.

00:29:53.360 --> 00:29:54.560
이제 안드로이드에 대한 어떻습니까?

00:29:54.560 --> 00:29:57.500
다른 특정 사항이 있습니까?
당신이 사용할 수있는 도구가 있습니까?

00:29:57.500 --> 00:29:59.465
>> 그것은 좋은 질문입니다
왜냐하면, 안드로이드,

00:29:59.465 --> 00:30:02.000
우리가 이야기 한 모든 것
iOS는 안드로이드에 적용됩니다.

00:30:02.000 --> 00:30:02.150
>> 당신을 얻었다.

00:30:02.150 --> 00:30:03.440
>> 다른 도구가 있습니다.

00:30:03.440 --> 00:30:07.145
안드로이드 네이티브 프로파일러
안드로이드 프로파일러라고합니다.

00:30:07.145 --> 00:30:08.390
정말 멋지다.

00:30:08.390 --> 00:30:09.740
그것은 당신에게 많은 것을 보여줍니다

00:30:09.740 --> 00:30:12.380
하지만 당신은 여전히
누가 그것을 사용해야

00:30:12.380 --> 00:30:14.330
함께 자마린 프로파일러

00:30:14.330 --> 00:30:16.790
관리되는
세계와 토착 세계.

00:30:16.790 --> 00:30:17.930
>> 당신을 얻었다. 그것은 단순히 그것을

00:30:17.930 --> 00:30:19.340
그것은 멋진 소리
훌륭한 도구가 있습니다.

00:30:19.340 --> 00:30:22.400
어디에 있든 사용 가능
당신은 아이폰 OS, 안드로이드에있어.

00:30:22.400 --> 00:30:23.240
>> 맞습니다.

00:30:23.240 --> 00:30:24.005
>> 나는 가서 그렇게 할 수 있습니다.

00:30:24.005 --> 00:30:25.820
솔직히, 그냥 찾고
이들 중 일부에서,

00:30:25.820 --> 00:30:28.160
나는 내 코드를 확신합니다.
나쁜 것들이 많이 있습니다.

00:30:28.160 --> 00:30:29.480
그래서 다음에 스트리밍할 때,

00:30:29.480 --> 00:30:31.790
그것은 모든 것
메모리 누수 문제를 해결합니다.

00:30:31.790 --> 00:30:32.180
>> 좋아.

00:30:32.180 --> 00:30:34.280
>> 아주 멋지다. 다른 모든 것 알렉시
당신이 얘기하고 싶은?

00:30:34.280 --> 00:30:35.315
오늘은 이 모든 것이 전부입니다.

00:30:35.315 --> 00:30:37.865
>> 굉장한. 글쎄, 감사합니다
모든 사람이 튜닝할 수 있습니다.

00:30:37.865 --> 00:30:40.010
알렉시, 주셔서 대단히 감사합니다
이 모든 것들을 보여주는.

00:30:40.010 --> 00:30:42.305
여러분 감사합니다. 감사
야고보가 나를 내버려 두어.

00:30:42.305 --> 00:30:43.970
>> 절대적으로, 그리고 반드시

00:30:43.970 --> 00:30:45.920
모든 것을 체크 아웃하는 것
아래 의 쇼 노트,

00:30:45.920 --> 00:30:47.420
모든 소스 열기
코드, 모든 링크

00:30:47.420 --> 00:30:48.980
거기에 있는 모든 문서에 대한 설명서를 참조하십시오.

00:30:48.980 --> 00:30:51.740
aka.ms/Xamarin 갈 수도 있습니다.

00:30:51.740 --> 00:30:54.485
전체 시리즈에 대한 모범 사례입니다.

00:30:54.485 --> 00:30:55.790
따라서 구독해야 합니다.

00:30:55.790 --> 00:30:57.695
당신이 어디에 있든 오늘
지금 보고 있습니다.

00:30:57.695 --> 00:30:59.090
제임스 몬테마그노입니다.

00:30:59.090 --> 00:31:01.790
이것은 자마린되었습니다
시청해 주셔서 감사합니다.

00:31:01.790 --> 00:31:02.480
여러분 감사합니다.

00:31:02.480 --> 00:31:09.230
[음악]

00:31:09.230 --> 00:31:11.120
이봐, 제임스 여기.
그냥 체크인하고 싶었어요

00:31:11.120 --> 00:31:13.175
고맙습니다.
이 비디오를 보고 있습니다.

00:31:13.175 --> 00:31:16.265
이제 모든 일을 하십시오.
같은 일을하고 싶은 것을 알고,

00:31:16.265 --> 00:31:18.710
구독 및 딩
그 알림 벨,

00:31:18.710 --> 00:31:20.825
의 일부가 될
알림 분대.

00:31:20.825 --> 00:31:22.190
당신이 여기있는 동안, 체크 아웃

00:31:22.190 --> 00:31:25.400
모든 멋진 동영상
이미 코딩된 것입니다.

00:31:25.400 --> 00:31:29.040
그 일을 클릭합니다. 클릭
그것을보고, 그것을 할.

