1
00:00:02,260 --> 00:00:04,850
Ciao, questo è poco altro da fare.

2
00:00:04,870 --> 00:00:12,170
In precedenza ho menzionato che un programma Java può anche sapere come le perdite di memoria, nonostante tutti gli

3
00:00:12,340 --> 00:00:20,310
sforzi degli elementi GC di Java attivi, stiano evitando perdite di memoria e accessi che eliminano i reati di oggetti obsoleti.

4
00:00:20,410 --> 00:00:25,740
Quindi andiamo avanti e vediamo che oggetto obsoleto di Francis.

5
00:00:25,840 --> 00:00:31,520
Consideriamo questo esempio dall'articolo 6 che rappresenta detto stack per brevità.

6
00:00:31,660 --> 00:00:34,310
Ho incluso solo le parti rilevanti del codice.

7
00:00:34,840 --> 00:00:41,620
E se non sai cosa è uno stack, è semplicemente l'ultimo nella fiducia o nella struttura dei dati e si

8
00:00:41,620 --> 00:00:44,010
suppone che sia un'operazione PUSH e POP.

9
00:00:44,260 --> 00:00:51,430
Usando push puoi aggiungere un elemento in cima alla pila che ti permette di rimuovere l'ultimo

10
00:00:51,430 --> 00:00:53,280
elemento inserito nella pila.

11
00:00:53,800 --> 00:00:58,070
E questo è il motivo per cui è chiamato l'ultimo in poco più.

12
00:00:58,420 --> 00:01:02,530
Quindi in pratica lo stack rappresenta una raccolta di elementi.

13
00:01:02,530 --> 00:01:03,870
Ora sappiamo quale esempio sei.

14
00:01:03,910 --> 00:01:10,330
È possibile vedere sia le operazioni push e pop sugli elementi nello stack che sono memorizzate in una matrice

15
00:01:11,020 --> 00:01:14,050
di oggetti e anche l'array è denominato elementi.

16
00:01:14,180 --> 00:01:21,520
La dimensione variabile rappresenta la dimensione corrente dell'ID e funge anche da Art Index e

17
00:01:21,520 --> 00:01:27,770
il suo valore sarà maggiore di un indice dell'ultimo elemento inserito nell'array.

18
00:01:27,790 --> 00:01:30,830
Potrebbe essere zero ogni volta che una pila è vuota.

19
00:01:30,890 --> 00:01:37,710
Aveva un metodo push che invoca dapprima un metodo chiamato assicurare la capacità che assicura che ci sia

20
00:01:37,710 --> 00:01:44,430
spazio sufficiente nello stock per aggiungere un nuovo elemento che ci sia spazio sufficiente negli elementi o

21
00:01:44,440 --> 00:01:51,970
così se l'array di elementi è già pieno allora sarebbe approssimativamente raddoppiare la dimensione della DGA vicino a spingere la materia.

22
00:01:51,990 --> 00:01:56,060
Cosa intendevo nella dimensione della posizione dell'indice azionario.

23
00:01:56,130 --> 00:02:03,690
Aumenterebbe quindi la dimensione in modo simile, assicurando che un elemento venga restituito solo quando lo stock

24
00:02:03,690 --> 00:02:05,280
non è vuoto.

25
00:02:05,460 --> 00:02:09,180
Come puoi vedere qui Pop sta semplicemente decrementando le dimensioni di questo.

26
00:02:09,180 --> 00:02:12,330
Quindi restituisce l'elemento che indice.

27
00:02:12,330 --> 00:02:19,260
Ma qui abbiamo una perdita di memoria anche dopo che il metodo restituisce l'elemento e quell'indice sta ancora ballando

28
00:02:19,590 --> 00:02:21,910
l'oggetto che è stato appena restituito.

29
00:02:22,820 --> 00:02:29,120
Quindi, se mantiene gli elementi popping, restituiamo gli oggetti, ma i riferimenti vengono ancora mantenuti

30
00:02:29,180 --> 00:02:36,320
nello stack in modo che quei riferimenti vengano definiti come espressioni obsolete e gli oggetti a cui

31
00:02:36,320 --> 00:02:43,850
si riferiscono sono senza memoria anche se quegli oggetti non hanno riferimenti in il codice che sta invocando il

32
00:02:43,850 --> 00:02:44,950
metodo pop.

33
00:02:45,020 --> 00:02:50,990
I Garbage Collector continueranno a non raccogliere quegli oggetti in quanto li considerano vivi a causa di questi

34
00:02:51,050 --> 00:02:52,710
segmenti di oggetti obsoleti.

35
00:02:54,660 --> 00:03:01,980
Quindi, se ricordate, abbiamo detto che una perdita di memoria è fondamentalmente un oggetto inutilizzato che non è ciò che è la

36
00:03:01,980 --> 00:03:04,600
libertà che è accaduto nell'esempio di overstocking.

37
00:03:04,710 --> 00:03:10,810
Quindi GC è semplicemente incapace di riconoscerli come oggetti abbandonati come oggetti morti.

38
00:03:10,860 --> 00:03:16,980
Nota che ognuno di questi oggetti inutilizzati potrebbe ballare su altri oggetti, quindi non

39
00:03:16,980 --> 00:03:18,280
li raccoglierà.

40
00:03:18,720 --> 00:03:20,140
Quindi è davvero brutto.

41
00:03:21,640 --> 00:03:29,430
Perdite di qualcuno comporterebbero un aumento dell'impronta di memoria che a sua volta implicherebbe un aumento di G. C. attività.

42
00:03:29,660 --> 00:03:35,270
E se c'è molta attività DC sappiamo che ci sarà l'arresto dell'intero processo e questo significa

43
00:03:35,870 --> 00:03:42,950
che il degrado delle prestazioni delle applicazioni e inverso è che se non si è fortunati allora potremmo incorrere in errori

44
00:03:42,950 --> 00:03:43,980
di memoria.

45
00:03:45,660 --> 00:03:50,330
E la soluzione per questo è annullare i riferimenti obsoleti.

46
00:03:50,460 --> 00:03:57,420
Quindi ecco il movimento corrente della rete pop e imposta l'elemento nello stack e usa un'altra

47
00:03:57,420 --> 00:03:59,560
variabile per indebolire l'oggetto.

48
00:03:59,670 --> 00:04:03,950
Quindi non più insiste obsoleto ora che ne sai qualcosa.

49
00:04:04,040 --> 00:04:11,210
Non dovresti andare a inchiodare ogni oggetto di riferimento all'indietro a non ripulito chiamato Quasi sempre.

50
00:04:11,280 --> 00:04:17,810
Si lascerebbe che gli oggetti andassero fuori dal campo di applicazione e diventassero dati in questo modo si tratta di garbage collection

51
00:04:17,880 --> 00:04:21,340
che annullano il fatto che l'offensiva dell'oggetto non dovrebbe essere un'eccezione.

52
00:04:21,720 --> 00:04:28,260
Quindi la prossima domanda sarebbe quando dovremmo annullare tutti i riferimenti a Jindalee dovresti essere avvisato quando

53
00:04:28,260 --> 00:04:34,180
il tuo programma sta gestendo la propria memoria come nel caso dell'esempio di stack qui.

54
00:04:34,440 --> 00:04:38,980
In questi casi c'è la possibilità che tu finisca con l'essere obsoleto o con Francis.

55
00:04:39,090 --> 00:04:41,910
Quindi stai attento quando scrivi questo tipo di codice.

56
00:04:42,730 --> 00:04:48,670
E Gendron a volte il tuo programma potrebbe essere in esecuzione per un tempo molto lungo con perdite di

57
00:04:48,710 --> 00:04:55,270
memoria e se sei fortunato potresti non ottenere mai errori di memoria o potresti persino non notare un degrado evidente nelle prestazioni.

58
00:04:55,460 --> 00:05:01,060
Ma se non sei fortunato, potresti perdere l'errore di memoria e tutta l'applicazione potrebbe rallentare.

59
00:05:01,130 --> 00:05:06,590
In tal caso, è possibile utilizzare l'aumento del monitoraggio delle prestazioni che può aiutare a sviluppare perdite di memoria

60
00:05:07,460 --> 00:05:08,830
nella sezione delle risorse.

61
00:05:08,840 --> 00:05:13,870
Includerò un elenco di alcuni monitoraggi delle prestazioni disponibili, puoi dare un'occhiata a loro.

62
00:05:14,150 --> 00:05:19,820
A volte potresti non avere alcuna perdita di memoria, ma la tua applicazione potrebbe ancora

63
00:05:19,820 --> 00:05:25,720
utilizzare molta memoria e se non vedi alcun problema nel tuo codice evidenziato dal monitoraggio delle

64
00:05:25,720 --> 00:05:32,240
prestazioni, allora l'unica cosa che puoi fare è guarda altri cumuli Biss è un'altra mente messicana Exa che

65
00:05:32,240 --> 00:05:33,620
abbiamo visto prima.

66
00:05:33,620 --> 00:05:42,280
Oppure è possibile allocare più risorse, come ad esempio l'uso di Seip, più il suggeritore di memoria ha riassunto questo e

67
00:05:42,280 --> 00:05:43,990
cinque città su GC.

68
00:05:44,090 --> 00:05:50,900
Le cose principali che dovresti ricordare su GC sono che solo i garbage collector e piuttosto

69
00:05:50,900 --> 00:05:57,950
Makana spazzano i tipi di algoritmi per identificare e recuperare gli oggetti morti e questi algoritmi richiederebbero

70
00:05:57,950 --> 00:06:02,290
una sospensione dell'applicazione che sottovaluta completamente i tempi passati.

71
00:06:02,490 --> 00:06:08,210
I garbage collector utilizzano un approccio di raccolta generazionale che alcuni garbage collector utilizzano funzionalità

72
00:06:08,210 --> 00:06:11,470
come il multi-threading per ridurre ulteriormente i pashtun.

73
00:06:11,480 --> 00:06:18,390
Ora tieni presente che da quello che abbiamo visto l'algoritmo di copia di Marken veniva usato nell'azione di Yankel.

74
00:06:18,410 --> 00:06:20,000
OK, tienilo a mente.

75
00:06:20,270 --> 00:06:21,220
Quindi questo è tutto.

76
00:06:21,320 --> 00:06:24,350
E spero vi sia piaciuto conoscere la raccolta dei rifiuti.

77
00:06:24,350 --> 00:06:24,770
Grazie.
