IRTUM – Institutional Repository of the Technical University of Moldova

Analiza gestionării memoriei în limbaje de programare moderne și tradiționale

Show simple item record

dc.contributor.advisor BÎTCA, Ernest
dc.contributor.advisor COJOCARU, Svetlana
dc.contributor.author TRIFAN, Denis
dc.date.accessioned 2025-02-03T07:52:21Z
dc.date.available 2025-02-03T07:52:21Z
dc.date.issued 2025
dc.identifier.citation TRIFAN, Denis. Analiza gestionării memoriei în limbaje de programare moderne și tradiționale. Teză de master. Programul de studiu Tehnologia Informației. Conducător ştiinţific BÎTCA Ernest. Universitatea Tehnică a Moldovei. Chișinău, 2025. en_US
dc.identifier.uri http://repository.utm.md/handle/5014/29286
dc.description Fişierul ataşat conţine: Rezumat, Abstract, Cuprins, Lista abrevierilor, Introducere, Bibliografie. en_US
dc.description.abstract În capitolul ”ANALIZA DOMENIULUI DE STUDIU” se efectuează un studiu asupra organizării memoriei în limbaje de programare tradiționale și moderne. În cadrul cercetării au fost selectate limbajele C++ și Java. Se definesc mecanismele de gestionare a memoriei în cadrul fiecărui limbaj. Importanța temei include necesitatea utilizării unui mecanism automatizat față de unul manual. Analizând cercetările similare existente, a fost realizată o comparare a acestora cu scopul de identificare a metodologiilor de realizare experimentată, metricilor necesare de comparare a performanței și alegerea testelor ce vor evidenția avantajele utilizării unui mecanism în favoarea altuia. Capitolul ”METODOLOGIA EXPERIMENTALĂ” detaliază metodele de testare, realizarea testelor de performanță, explicarea funcționalității testelor și extragerea datelor din fișierele de tip log. În cazul limbajului C++, sunt selectate șapte metode de creare a obiectelor, folosind pointeri bruți, pointeri inteligenți unici, pointeri inteligenți partajați și algoritmul Boehm GC. Se stabilește metodologia de execuție și realizare a testelor, precum și modul de salvare a rezultatelor obținute. De asemenea, sunt definite compilatoarele utilizate, nivelurile de optimizare studiate, funcțiile de creare a obiectelor și procesul de instalare treptată a instrumentelor necesare. Pentru limbajul Java, sunt selectate trei suite de teste de performanță: SPECjvm2008, DaCapo și Renaissance. Fiecare test din aceste suite este descris în detaliu, evidențiindu-se funcționalitatea specifică. Procesul de selecție și filtrare a testelor este analizat, iar metoda de execuție a testelor prin terminal pentru fiecare suită este explicată. Sunt definiți parametrii de intrare și dimensiunile spațiului heap pentru fiecare test. Execuția aplicațiilor generează fișiere de tip log, care necesită prelucrare prin sisteme specializate în extragerea datelor. În acest sens, se realizează un studiu asupra soluțiilor existente pe piață și se selectează aplicația de tip desktop GCviewer pentru prelucrarea și analiza datelor din fișierele de log. Capitolul ”ANALIZA REZULTATELOR” prezintă calculul statisticilor bazate pe rezultatele testelor de performanță pentru limbajele C++ și Java. Pentru limbajul C++, analiza rezultatelor se concentrează pe metrica timpului de execuție, comparând soluțiile oferite de biblioteca standard cu cele din biblioteca externă Boehm GC. Pentru limbajul Java, rezultatele testelor de GC sunt analizate pentru patru versiuni de JDK – 8, 11, 17 și 21. Performanța fiecărui algoritm de GC este evaluată și comparată pe baza a trei metrici esențiale: debitul, pauza maximă și timpul total de execuție. În cadrul suitelor de teste SPECjvm2008, DaCapo și Renaissance, sunt identificate și analizate separat acele teste care prezintă un debit scăzut, oferind o perspectivă detaliată asupra cazurilor care ar putea afecta performanța. Pe baza rezultatelor structurate, se trag concluzii privind eficiența fiecărui algoritm de GC pentru diferite versiuni de JDK, evidențiindu-se performanța fiecărui algoritm în funcție de versiunea platformei și metricele studiate. en_US
dc.description.abstract In the chapter ”ANALYSIS OF THE STUDY DOMAIN”, a study is conducted on memory organization in traditional and modern programming languages. The research focuses on the languages C++ and Java. The mechanisms of memory management for each language are defined. The importance of the topic includes the necessity of using an automatic mechanism instead of a manual one. By analyzing existing similar research, a comparison was made to identify the methodologies for experimental implementation, the metrics necessary for performance comparison, and the selection of tests that will highlight the advantages of using one mechanism over another. The chapter ”EXPERIMENTAL METHODOLOGY” details the testing methods, performance testing procedures, functionality of the tests, and data extraction from log files. For the C++ language, seven object creation methods are selected, using raw pointers, unique smart pointers, shared smart pointers, and the Boehm GC algorithm. The methodology for test execution and result recording is established, as well as the method of saving the obtained results. Additionally, the compilers used, optimization levels studied, object creation functions, and the step-by-step installation process for the required tools are defined. For the Java language, three performance testing suites are selected: SPECjvm2008, DaCapo, and Renaissance. Each test within these suites is described in detail, highlighting its specific functionality. The process of test selection and filtering is analyzed, and the method for executing tests via the terminal for each suite is explained. Input parameters and heap space sizes for each test are also defined. Application execution generates log files that require processing by specialized data extraction systems. In this regard, a study of the existing market solutions is conducted, and the GCviewer desktop application is selected for processing and analyzing the data from log files. The chapter ”RESULT ANALYSIS” presents the calculation of statistics based on the performance test results for C++ and Java. For C++, the result analysis focuses on execution time metrics, comparing solutions provided by the standard library with those from the external Boehm GC library. For Java, GC test results are analyzed for four JDK versions – 8, 11, 17, and 21. The performance of each GC algorithm is evaluated and compared based on three essential metrics: throughput, maximum pause time, and total execution time. Within the SPECjvm2008, DaCapo, and Renaissance test suites, tests with low throughput are identified and analyzed separately, providing a detailed perspective on cases that may impact performance. Based on the structured results, conclusions are drawn regarding the efficiency of each GC algorithm for different JDK versions, highlighting the performance of each algorithm according to the platform version and the studied metrics. en_US
dc.language.iso ro en_US
dc.publisher Universitatea Tehnică a Moldovei en_US
dc.rights Attribution-NonCommercial-NoDerivs 3.0 United States *
dc.rights.uri http://creativecommons.org/licenses/by-nc-nd/3.0/us/ *
dc.subject limbaje de programare en_US
dc.subject metode de testare en_US
dc.subject teste de performanță en_US
dc.title Analiza gestionării memoriei în limbaje de programare moderne și tradiționale en_US
dc.type Thesis en_US


Files in this item

The following license files are associated with this item:

This item appears in the following Collection(s)

Show simple item record

Attribution-NonCommercial-NoDerivs 3.0 United States Except where otherwise noted, this item's license is described as Attribution-NonCommercial-NoDerivs 3.0 United States

Search DSpace


Browse

My Account