A Study of Java`s Non-Java Memory. Remigiusz Mytyk
|
|
- Aleksandra Wawrzyniak
- 9 lat temu
- Przeglądów:
Transkrypt
1 A Study of Java`s Non-Java Memory Remigiusz Mytyk
2 Agenda 1. Wprowadzenie 2. Struktura pamięci 3. MARUSA 4. Micro-benchmarki 5. Macro-benchmarki 6. Modyfikacja JVM 7. Wnioski
3 Wprowadzenie Wiele osób spotkało się zapewne w Javie z wyjątkiem out-of-memory Z reguły powodem jest przepełnienie sterty, na której znajdują się obiekty tworzone podczas wykonywania programu Ale przyczyną może byd również wyczerpanie pamięci określanej dalej jako NIEJAVOWA(NJ) Na przykład w skutek załadowanie zbyt dużej liczby klas
4 Przeznaczenie pamięci NJ Biblioteki dzielone Metadane załadowanych klas Skompilowany kod JIT Optymalizacja wywołao refleksyjnych Przechowywanie direct byte buffer
5 Budowa pamięci NJ Rozkład pamięci NJ po 9minutach działania aplikacji J2EE Apache DayTrayder na WebSphere Application Server Rozmiar tej pamięci wynosi 210 MB prawie tyle samo co domyślna wartośd sterty Nie wszyscy programiści są świadomi takiego stanu rzeczy =)
6 Podział pamięci NJ 1. Obszar kodu Kod natywny załadowany z wykonywalnych plików i bibliotek Dane z załadowane z bibliotek dzielonych 2. Obszar roboczy JVM Dane używane na potrzebę JVM Pamięd zaalokowana przez standardową bibliotekę Javy Metody JNI użytkowników
7 Podział pamięci NJ 3. Obszar metadanych klas Dane załadowane z plików klas Bytecode, znaki UTF-8, pule stałych, tablice metod 4. Obszar skompilowanego kodu JIT Kod natywny wygenerowany przez kompilator JIT Dane do tego kodu
8 Podział pamięci NJ 5. Obszar roboczy kompilatora JIT Pośrednia reprezentacja kompilowanych metod 6. Obszar malloc-then-freed Pamięd zajęta poprzez wywołanie malloc() Następnie zwolniona używając free() Zarządzanie tą pamięcią zależy od libc
9 Podział pamięci NJ 7. Obszar narzutu systemowego Pamięd wykorzystywana przez OS do zarządzania pamięcią procesu Nagłówek malloca Nieużywane części stron pamięci 8. Obszar stosu Stos Javy i C Ramki stosu Javy w zależności od implementacji JVM
10 MARUSA W celu zliczania pamięci należącej do poszczególnych obszarów autorzy stworzyli narzędzie MARUSA - Memory Analyzer for Redundant,Unused, and String Areas Zbiera statystyki zarówno z OS jak i JVM Wizualizuje wyniki podzielone na wymienione wcześniej kategorie
11 Metodologia mierzenia pamięci NJ Autorom zależało na pełnej analizie pamięci przydzielonej do procesu JVM Zbieranie informacji na temat obszarów pamięci: 1. Informacje z poziomu OS zakresy pamięci i ich atrybuty 2. Informacje poziomu JVM jakie komponenty alokowały pamięd 3. Powiązanie ze sobą informacji z punktu 1 i 2
12 Duże, nowoczesne aplikacje posiadają własne wewnętrzne managery pamięci
13 Informacje poziomu OS Rozmiar i atrybuty bloków pamięci należących do JVM MARUSA używa maps z filesystemu /proc do uzyskania zakresów pamięci i ich atrybutów Stan fizycznych stron za pomocą pageinfo również z /proc
14 Informacje poziomu JVM Debugowanie rozmiar metadanych klas, skompilowanego kodu JIT Modyfikacja JVM dokładne informacje o alokowanej i zwalnianej pamięci, żądania do wewnętrznego managera pamięci
15 Zliczanie pamięci NJ MARUSA posiada mapę w której są informacje na temat każdego byte`u przydzielonego w aplikacji Na podstawie atrybutów program zlicza pamięd należącą do poszczególnych obszarów
16 Micro-benchmarki Zależności pomiędzy rozmiarem pamięci NJ a operacjami wykonywanymi w programach napisanych w Javie. Benchmarki te analizują wykorzystanie: obszaru metadanych klas obszaru roboczego JVM i obszaru malloc-thenfreed
17 Środowiska
18 Micro-benchmark dla obszaru metadanych klas Wpływ mechanizmu refleksji na rozmiar pamięci NJ Wywołamy gettery i settery dla 6000 pól za pomocą obiektów klasy java.lang.reflect.method Zmierzymy rozmiar wykorzystanej pamięci wywołując te metody 10, 100 i 2000 razy
19 Wyniki dla środowiska x86 Metadane klas: 3.9 MB dla MB dla 100 i 2000 Skompilowany kod JIT 0.8 MB dla 10 i MB dla 2000 Optymalizacja wywołao refleksyjnych Optymalizacja przez kompilator JIT Wzrost kosztów przy 2000 wywołaniach o 29.2 MB i 43% rozmiaru całej wykorzystanej pamięci
20 Wyniki dla środowiska POWER Domyślnym rozmiarem strony w RedHat Enterprise Linux 5 for POWER wynosi 64 KB o Zwiększa procent trafieo w TLB o Zwiększa również wykorzystanie pamięci wewnętrzna fragmentacja Różnica w implementacji przydziału pamięci dla obszaru skompilowanego kodu JIT. (Przydzielane są większe bloki pamięci)
21 Micro-benchmark dla obszaru roboczego JVM i obszaru malloc-then-freed Zachowanie pamięci NJ podczas alokacji i zwalniania direct byte buffers Alokujemy buforów, każdy po 32 KB, przy stercie Javy rozmiaru 8MB Następnie po zwolnieniu uruchamiamy garbage collector wywołując System.gc()
22 Wyniki dla środowiska x86 Sterta javy: 8 MB Obszar roboczy JVM: 354.3MB z czego MB to pamięd buforów Po uruchomieniu GC: Obszar roboczy JVM: -352 MB Obszar malloc-thenfreed: +350 MB Duże zużycie pamięci niewidoczne dla programów i narzędzi do debugowania Zużycie pamięci po wywołaniu garbage collectora nie zmieniło się
23 Wyniki dla środowiska POWER Na stercie pozostało około 900 obiektów direct byte buffer pomimo odpalenia garbage collectora
24 Macro-benchmarki Sprawdzimy jak zachowuje się pamięd NJ podczas pracy większych aplikacji. Przetestujemy Apache DayTrader na WebSphere Application Server Benchmarki DaCapo Przetestujemy je na takich samych środowiskach jak micro-benchmarki
25 Apache DayTrader Złożona aplikacja J2EE wykorzystująca szereg technologii: Warstwa prezentacji - Java Servlets and JavaServer Pages (JSPs) Logika biznesowa i warstwa persystencji - Java database connectivity (JDBC), Java Message Service (JMS), Enterprise JavaBeans (EJBs) i Message-Driven Beans (MDBs)
26 Apache DayTrader My podczas 10 minutowego testu generowaliśmy ruch w aplikacji za pomocą 30 wątków Maksymalny rozmiar sterty był ustawiony na 256 MB
27 Apache DayTrader na x86 Trzy największe obszary: Obszar metadanych klas największy ze wszystkich tuż po uruchomieniu Obszar roboczy JVM wzrósł po 30sec za sprawą Direct Byte Buffers Następnie urósł obszar malloc-then-freed Okazjonalnie skakał obszar roboczy JIT, ale przez większośd czasu zajmował znikomą pamięd
28 Apache DayTrader na POWER Skoki w obszarze roboczym JVM Wzrost przez Direct Byte Buffer po 30sec i po 2min Tymczasowe struktury alokacja przy 30sec i zwolnienie po 1min Stos większy o 4 MB większy rozmiar strony 155 wątków dla WAS W tym teście wykorzystano 20 wątków do generowania ruchu, ponieważ maszyna dla platformy POWER była wolniejsza od tej dla x86. Natomiast wykorzystanie CPU w obu przypadkach zostało utrzymane na poziomie 90%.
29 DaCapo Benchmarks Zestaw użytkowych, opensource`owych aplikacji, które umożliwiają testowanie pamięci poprzez jej różnorodne i zaawansowane metody obciążania Wyniki dla benchmarku bloat, ponieważ dla innych benchmarków zaobserwowano podobne zachowanie pamięci NJ Benchmark ten alokuje 990 MB danych bytecodu Sterta javy ustawiona na 13 MB
30 DaCapo Benchmark dla x86 Zależnośd pomiędzy rozmiarem obszaru roboczego JIT i malloc-thenfreed Rozmiar malloc-then-freed zależy od: Alokacji i zwalniania pamięci przez kompilator JIT Algorytmu użytego do zarządzania listą wolnej pamięci w libc
31 Benchmark DaCapo dla POWER Bardziej agresywna optymalizacja na platformie POWER skutkuje zwiększeniem obszaru malloc-thenfreed Obszar kodu jak i skompilowanego kodu JIT większe z przyczyn omawianych wcześniej
32 Redukcja obszaru malloc-then-freed Znaczny rozmiar pamięci zajmowany przez ten obszar Trudnośd z wyznaczeniem prawdziwego rozmiaru pamięci zajmowanego przez program Rozmiar tego obszaru podlega również trudnym do przewidzenia skokom
33 Dwa wywołania tego samego benchmarka DaCapo Znaczne różnice w rozmiarach obszaru malloc-then-freed
34 Redukcja obszaru malloc-then-freed Obszar malloc-then-freed trzymany na liście wolnej pamięci zarządzanej przez libc Brak w API możliwości przekazania czy zwalniany blok pamięci powinien byd przechowywany do ponownego użycia, czy powinien byd zwrócony do OS Utrudnia efektywne zarządzanie pamięcią pomiędzy aplikacją i libc
35 madvise() system call Możemy zmniejszyd obszar zajmowany przez malloc-then-freed przez bezpośrednie wysłanie prośby do OS, aby usunął fizyczne strony z pamięci procesu. W Linuxie możemy skorzystad z systemowego wywołania madvise(). Chociaż obszary znajdujące się na liście wolnej pamięci dalej będą zajmowad przestrzeo adresową, zwolniona zostanie fizyczna pamięd.
36 madvise() system call Technika używana przy ogólnym menagerze pamięci i dla sterty javy My zastosujemy to dla obszaru roboczego JIT Produkuje większośd obszaru malloc-then-freed Ograniczamy liczbę wywołao systemowych
37 madvise() system call w Linuxie Aplikacja informuje jądro jak zamierza używad dany obszar pamięci. Jądro może zastosowad różne techniki usprawniające jak np. czytanie z wyprzedzeniem itp., ale może również zignorowad taką informację Opcje zależą od konkretnego OS MADV_DONTNEED: wskazane strony pamięci nie będą w najbliższym czasie użytkowane. wirtualne adresy pozostaną zarezerwowane, fizyczne strony zostaną natomiast zwolnione
38 Modyfikacja JVM Wywołujemy madvise() kiedy chcemy zwolnid blok pamięci Ograniczamy się do bloków zwalnianych przez obszar roboczy JIT
39
40
41 Wpływ na wydajnośd Średnie różnice pomiędzy wywołaniami z madvise() i bez wynoszą 1% i 1.8% odpowiednio dla x86 i POWER Porównaliśmy czasy wykonao poszczególnych benchmarków Wyniki wskazują, że wprowadzone zmiany mają niewielki wpływ na wydajnośd
42 Swapping Wydaje się, że nie musimy się już martwid o duże rozmiary pamięci w obszarze mallocthen-freed, ponieważ OS powinien odbierad od nas wolne strony Nie wiadomo jednak czy nasze rozwiązanie nie spowoduje wymiany zbyt dużej liczby stron
43 Swapping Zostały więc przeprowadzone kolejne testy, które dodatkowo wskazały znaczącą poprawę w liczbie wymienianych stron
44 Wnioski Rozmiar pamięci NJ może równie duży jak rozmiar sterty dla wielu programów Pamięd NJ jest używana z wielu różnych powodów Może to oznaczad wiele różnych przyczyn błędów takich jak wyjątki out-of-memory Coraz więcej optymalizacji jak w przypadku wywołao refleksyjnych oznacza również często coraz większe narzuty na przykład w pamięci NJ
45 Wnioski Zauważyliśmy również, że system zarządzania pamięcią libc, może mied wpływ na rozmiar pamięci NJ Sugeruje to koniecznośd lepszej integracji różnych warstw MMS
46 Dziękuję za uwagę
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma
Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa
1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko
NETBEANS PROFILER TOMASZ ŁUKASZUK
NETBEANS PROFILER TOMASZ ŁUKASZUK STRESZCZENIE: Dokument zawiera podstawowe informacje dotyczące programu NetBeans Profiler. Stanowi uproszczoną instrukcję jego używania. Dotyczy NetBeans Profiler w wersji
PyPy's Approach to Virtual Machine Construction
PyPy's Approach to Virtual Machine Construction Armin Rigo, Samuele Pedroni Prezentacja: Michał Bendowski Czym jest PyPy? Implementacja Pythona w Pythonie - wydajniejsza niż oryginalna implementacja w
Systemy operacyjne III
Systemy operacyjne III WYKŁAD Jan Kazimirski Pamięć wirtualna Stronicowanie Pamięć podzielona na niewielki bloki Bloki procesu to strony a bloki fizyczne to ramki System operacyjny przechowuje dla każdego
Optymalizacja programów Open Source. Profilery wysokiego poziomu część 2. Krzysztof Lichota
Optymalizacja programów Open Source Profilery wysokiego poziomu część 2 Krzysztof Lichota lichota@mimuw.edu.pl gprof gprof Pomiar działa na zasadzie instrumentacji kompilowanego kodu (wejścia i wyjścia
SOP System Obsługi Parkingów
SOP System Obsługi Parkingów JEE i Android Marcin Tatjewski Tomasz Traczyk Grzegorz Zieliński Paweł Borycki 5 listopada 2009 www.sopark.pl Plan prezentacji Java Platform, Enterprise Edition (JEE) Wstęp
Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++
Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).
Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154
Działanie systemu operacyjnego
Działanie systemu operacyjnego Budowa systemu komputerowego Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej Pamięć
Działanie systemu operacyjnego
Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej sieci Pamięć operacyjna Przerwania Przerwania Przerwanie
Wykład 7. Zarządzanie pamięcią
Wykład 7 Zarządzanie pamięcią -1- Świat idealny a świat rzeczywisty W idealnym świecie pamięć powinna Mieć bardzo dużą pojemność Mieć bardzo krótki czas dostępu Być nieulotna (zawartość nie jest tracona
Działanie systemu operacyjnego
Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej I NIC sieci Pamięć operacyjna Przerwania Przerwania
Struktury systemów operacyjnych
Struktury systemów operacyjnych Jan Tuziemski Część slajdów to zmodyfiowane slajdy ze strony os-booi.com copyright Silberschatz, Galvin and Gagne, 2013 Cele wykładu 1. Opis usług dostarczanych przez OS
Visual VM, Java Management extension i inne ciekawostki
Visual VM, Java Management extension i inne ciekawostki Adam Dudczak adudczak (at) gmail.com Poznań Java User Group 6 października 2008 Plan prezentacji 1 Wprowadzenie do VisualVM 2 VisualVm jako klient
Zarządzanie pamięcią operacyjną
SOE Systemy Operacyjne Wykład 7 Zarządzanie pamięcią operacyjną dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Hierarchia pamięci czas dostępu Rejestry Pamięć podręczna koszt
Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008
Adam 1 grudnia 2008 Wstęp Opis Historia Apache kontener serwletów rozwijany w ramach projektu Apache jeden z bardziej popularnych kontenerów Web open source, Apache Software License rozwijany przez ASF
Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.
Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Wstęp Programowanie w Javie 2 mgr inż. Michał Misiak Agenda Założenia do wykładu Zasady zaliczeń Ramowy program wykładu
Przegląd dostępnych hypervisorów. Jakub Wojtasz IT Solutions Architect jwojtasz@atom-tech.pl
Przegląd dostępnych hypervisorów Jakub Wojtasz IT Solutions Architect jwojtasz@atom-tech.pl Agenda Podział hypervisorów Architektura wybranych rozwiązań Najwięksi gracze na rynku Podział hypervisorów Hypervisor
Programowanie Użytkowe. Dr. inż. Marcin Blachnik
Programowanie Użytkowe Dr. inż. Marcin Blachnik Literatura Internet Java Podstawy Horstmann & Cornell, Helion, Java. Techniki Zaawansowane, G.Cornell Thinking in Java., Bruce Eckel Java. Programowanie
Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
Rozwiązanie Compuware dynatrace
Rozwiązanie Compuware dynatrace COMPUWARE DYNATRACE... 3 2 COMPUWARE DYNATRACE Narzędzie Compuware dynatrace oparte jest o unikatową technologię agentową, która pozwala na dogłębną analizę stanu aplikacji
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Java EE produkcja oprogramowania
Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez
Zarządzanie pamięcią w systemie operacyjnym
Zarządzanie pamięcią w systemie operacyjnym Cele: przydział zasobów pamięciowych wykonywanym programom, zapewnienie bezpieczeństwa wykonywanych procesów (ochrona pamięci), efektywne wykorzystanie dostępnej
Programowanie obiektowe. Wprowadzenie
1 Programowanie obiektowe Wprowadzenie 2 Programowanie obiektowe Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego
Programowanie obiektowe zastosowanie języka Java SE
Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z
Programowanie w Javie 2. Płock, 26 luty 2014 r.
Programowanie w Javie 2 Płock, 26 luty 2014 r. Zaliczenie wykładu i ćwiczeń Zaliczenie ćwiczeń (projekt na zaliczenie, 3 prace domowe) Zaliczenie wykładu (referat na 1h) Ocena ćwiczeń: 70% projekt + 30%
ochrona w systemie operacyjnym
ochrona w systemie operacyjnym Ochrona mechanizm monitorowania, kontrolowania i nadzorowania dostępu programów, procesów i użytkowników do zasobów systemu. Wykorzystuje autoryzację i autentykację ochrona
EJB 3.0 (Enterprise JavaBeans 3.0)
EJB 3.0 (Enterprise JavaBeans 3.0) Adrian Dudek Wirtualne Przedsiębiorstwo 2 Wrocław, 1 czerwca 2010 Plan prezentacji 1 Wprowadzenie Cel prezentacji Czym jest EJB 3.0? Historia 2 3 Cel prezentacji Wprowadzenie
Programowanie w języku C++
Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Działanie systemu operacyjnego
Działanie systemu operacyjnego Budowa systemu komputerowego I NIC Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej
Pamięć. Jan Tuziemski Źródło części materiałów: os-book.com
Pamięć Jan Tuziemski Źródło części materiałów: os-book.com Cele wykładu Przedstawienie sposobów organizacji pamięci komputera Przedstawienie technik zarządzania pamięcią Podstawy Przed uruchomieniem program
SOE Systemy Operacyjne Wykład 8 Pamięć wirtualna dr inż. Andrzej Wielgus
SOE Systemy Operacyjne Wykład 8 Pamięć wirtualna dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Pamięć wirtualna Stronicowanie na żądanie większość współczesnych systemów
Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i
Program szkolenia: Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Produktywne tworzenie aplikacji webowych z
Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8
Początki Javy Java została pierwotnie zaprojektowana dla telewizji interaktywnej, ale była to zbyt zaawansowaną technologią dla branży cyfrowej telewizji kablowej. James Gosling, Mike Sheridan i Patrick
System pamięci. Pamięć wirtualna
System pamięci Pamięć wirtualna Pamięć wirtualna Model pamięci cache+ram nie jest jeszcze realistyczny W rzeczywistych systemach działa wiele programów jednocześnie Każdy może używać tej samej przestrzeni
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 007 Tryb rzeczywisty i chroniony procesora 2 SO i SK/WIN Wszystkie 32-bitowe procesory (386 i nowsze) mogą pracować w kilku trybach. Tryby pracy
Podstawy programowania komputerów
Podstawy programowania komputerów Wykład 10: Sterowanie pamięcią w C Pamięć na stosie!każdy program napisany w języku C ma dostęp do dwóch obszarów pamięci - stosu i sterty, w których może być przechowywana
Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński
Java - wprowadzenie Programowanie Obiektowe Mateusz Cicheński O języku Czym jest Java Cechy charakterystyczne języka Przykładowe zastosowania Składnia języka Podstawowe typy Wybrane słowa kluczowe Plan
Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Bezpieczeństwo systemów komputerowych. Java i JavaScript. Java i JavaScript. Java - historia
Bezpieczeństwo systemów komputerowych Java i JavaScript mgr Katarzyna Trybicka-Francik kasiat@zeus.polsl.gliwice.pl pok. 503 Java i JavaScript używane w celu dodania cech interaktywności do stron WWW mogą
dr inż. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017 Wykład nr 7 (11.01.2017) Rok akademicki 2016/2017, Wykład
Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.
Programowanie w Javie cz. 1 Wstęp Łódź, 24 luty 2014 r. Prawdy i mity o Javie Java jest techniką webową? (tak, platforma Java EE, aplety) Java jest bezpieczna? (tak, aplety, brak operowania na pamięci)
UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci
UNIX: architektura i implementacja mechanizmów bezpieczeństwa Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci Plan prezentacji: Wprowadzenie do struktury systemów rodziny UNIX
Programowanie Komponentowe WebAPI
Programowanie Komponentowe WebAPI dr inż. Ireneusz Szcześniak jesień 2016 roku WebAPI - interfejs webowy WebAPI to interfejs aplikacji (usługi, komponentu, serwisu) dostępnej najczęściej przez Internet,
1 Wprowadzenie do J2EE
Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2
3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 2 / 22
ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH struktury procesorów ASK SP.06 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 Maszyny wirtualne 2 3 Literatura c Dr inż. Ignacy
Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz
Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania
Adam Kotynia, Łukasz Kowalczyk
Adam Kotynia, Łukasz Kowalczyk Dynamiczna alokacja pamięci Alokacja pamięci oraz dezalokacja pamięci jest to odpowiednio przydział i zwolnienie ciągłego obszaru pamięci. Po uruchomieniu, proces (program)
dr inż. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2010/2011 Wykład nr 7 (24.01.2011) dr inż. Jarosław Forenc Rok akademicki
Organizacja pamięci w procesorach graficznych
Organizacja pamięci w procesorach graficznych Pamięć w GPU przechowuje dane dla procesora graficznego, służące do wyświetlaniu obrazu na ekran. Pamięć przechowuje m.in. dane wektorów, pikseli, tekstury
Optymalizacja programów Open-Source. Pamięć część 1. Krzysztof Lichota
Optymalizacja programów Open-Source Pamięć część 1 Krzysztof Lichota lichota@mimuw.edu.pl Dlaczego pamięć jest ważna Współczesne systemy operacyjne stosują wirtualizację pamięci i symulują większą pamięć
Komputery przemysłowe i systemy wbudowane
Komputery przemysłowe i systemy wbudowane Systemy operacyjne w systemach wbudowanych 2 KSEM WETI PG October 7, 2015 System operacyjny System operacyjny (OS) - opcjonalny w systemach wbudowanych. zbiór
Systemy Operacyjne Pamięć wirtualna cz. 2
Systemy Operacyjne Pamięć wirtualna cz. 2 Arkadiusz Chrobot Katedra Informatyki, Politechnika Świętokrzyska w Kielcach Kielce, 20 stycznia 2007 1 1 Wstęp 2 Minimalna liczba ramek 3 Algorytmy przydziału
Zarządzanie pamięcią operacyjną
Dariusz Wawrzyniak Plan wykładu Pamięć jako zasób systemu komputerowego hierarchia pamięci przestrzeń owa Wsparcie dla zarządzania pamięcią na poziomie architektury komputera Podział i przydział pamięci
Optymalizacja programów Open Source. Pamięć część 3. Krzysztof Lichota
Optymalizacja programów Open Source Pamięć część 3 Krzysztof Lichota lichota@mimuw.edu.pl Alokacja pamięci Dlaczego alokacja jest ważna dla wydajności Programy w języku wysokiego poziomu wykonują setki
SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią
Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 PLAN: 2. Pamięć rzeczywista 3. Pamięć wirtualna
GNU GProf i GCov. przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A Białystok
GNU GProf i GCov przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A 15-351 Białystok Streszczenie: Dokument zawiera podstawowe informacje
Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie
Zarządzanie pamięcią. Podstawy Wymiana (swapping). Przydział ciągły pamięci. Stronicowanie. Segmentacja. Segmentacja ze stronicowaniem.
Zarządzanie pamięcią Podstawy Wymiana (swapping). Przydział ciągły pamięci. Stronicowanie. Segmentacja. Segmentacja ze stronicowaniem. Zarządzanie pamięcią podstawy pamięć operacyjna (główna) (main memory,
Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński
Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński Plan Prezentacji. Programowanie ios. Jak zacząć? Co warto wiedzieć o programowaniu na platformę ios? Kilka słów na temat Obiective-C.
Android - wprowadzenie. Łukasz Przywarty 171018
Android - wprowadzenie Łukasz Przywarty 171018 Ramowy plan prezentacji Czym jest Android: definicja, krótka historia. Architektura systemu. Architektura aplikacji. Właściwości systemu. Środowisko deweloperskie.
architektura komputerów w. 8 Zarządzanie pamięcią
architektura komputerów w. 8 Zarządzanie pamięcią Zarządzanie pamięcią Jednostka centralna dysponuje zwykle duża mocą obliczeniową. Sprawne wykorzystanie możliwości jednostki przetwarzającej wymaga obecności
Ćwiczenie 1. Przygotowanie środowiska JAVA
Ćwiczenie 1 Przygotowanie środowiska JAVA 1. Wprowadzenie teoretyczne Instalacja JDK (Java Development Kit) NaleŜy pobrać z java.sun.com środowisko i zainstalować je. Następnie naleŝy skonfigurować środowisko.
CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu
CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu inż. Daniel Solarz Wydział Fizyki i Informatyki Stosowanej AGH 1. Cel projektu. Celem projektu było napisanie wtyczki
TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ
TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ Testowanie i naprawa Loxima You cannot control what you cannot measure. Tom DeMarco Grzegorz Timoszuk gt219709@students.mimuw.edu.pl Plan
Raport Hurtownie Danych
Raport Hurtownie Danych Algorytm Apriori na indeksie bitmapowym oraz OpenCL Mikołaj Dobski, Mateusz Jarus, Piotr Jessa, Jarosław Szymczak Cel projektu: Implementacja algorytmu Apriori oraz jego optymalizacja.
Wstęp do programowania
Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12 Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład
NASI SPONSORZY I PARTNERZY
NASI SPONSORZY I PARTNERZY Wirtualizacja baz danych a pamięć RAM Cezary Ołtuszyk Blog: coltuszyk.wordpress.com Plan spotkania I. Wprowadzenie do tematu II. III. IV. Hot Add Memory w Windows i SQL Server
Zarządzanie zasobami pamięci
Zarządzanie zasobami pamięci System operacyjny wykonuje programy umieszczone w pamięci operacyjnej. W pamięci operacyjnej przechowywany jest obecnie wykonywany program (proces) oraz niezbędne dane. Jeżeli
Wirtualizacja baz danych a Dynamic Memory. Cezary Ołtuszyk coltuszyk.wordpress.com
Wirtualizacja baz danych a Dynamic Memory Cezary Ołtuszyk coltuszyk.wordpress.com Plan spotkania I. Wprowadzenie do tematu II. III. IV. Problem 1: Spadek wydajności maszyny wirtualnej Problem 2: SQL Server
Architektura komputerów
Architektura komputerów Tydzień 12 Wspomaganie systemu operacyjnego: pamięć wirtualna Partycjonowanie Pamięć jest dzielona, aby mogło korzystać z niej wiele procesów. Dla jednego procesu przydzielana jest
System plików. Warstwowy model systemu plików
System plików System plików struktura danych organizująca i porządkująca zasoby pamięci masowych w SO. Struktura ta ma charakter hierarchiczny: urządzenia fizyczne strefy (partycje) woluminy (w UNIXie:
System pamięci. Pamięć wirtualna
System pamięci Pamięć wirtualna Pamięć wirtualna Model pamięci cache+ram nie jest jeszcze realistyczny W rzeczywistych systemach działa wiele programów jednocześnie Każdy może używać tej samej przestrzeni
Korporacyjna Magistrala Usług na przykładzie Mule ESB
Kod szkolenia: Tytuł szkolenia: ESB/M Korporacyjna Magistrala Usług na przykładzie Mule ESB Dni: 3 Opis: Adresaci szkolenia Szkolenie adresowane jest do programistów Java, analityków systemowych oraz architektów
System pamięci. Pamięć wirtualna
System pamięci Pamięć wirtualna Pamięć wirtualna Model pamięci cache+ram nie jest jeszcze realistyczny W rzeczywistych systemach działa wiele programów jednocześnie Każdy może używać tej samej przestrzeni
Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie
Java Enterprise Edition spotkanie nr 1 Sprawy organizacyjne, wprowadzenie 1 Informacje organizacyjne Program: Co będzie na tym wykładzie, a czego nie będzie? apteka rolnictwo Java Enterprise Edition vs
Schematy zarzadzania pamięcia
Schematy zarzadzania pamięcia Segmentacja podział obszaru pamięci procesu na logiczne jednostki segmenty o dowolnej długości. Postać adresu logicznego: [nr segmentu, przesunięcie]. Zwykle przechowywana
Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz
Podstawy informatyki System operacyjny dr inż. Adam Klimowicz System operacyjny OS (ang. Operating System) Program komputerowy bądź zbiór programów, który zarządza udostępnianiem zasobów komputera aplikacjom.
Translacja wprowadzenie
Translacja wprowadzenie Teoria kompilacji Dr inż. Janusz Majewski Katedra Informatyki Literatura 1) Aho A. V., Sethi R., Ullman J. D.: Compilers. Principles, Techniques and Tools, Addison- Wesley, 1986
Multimedia JAVA. Historia
Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania
Java - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja
Wątki w Android OS. Matt Rutkowski. GynSoft sp. z o.o. http://gynsoft.net matt@gynsoft.net
Wątki w Android OS Matt Rutkowski GynSoft sp. z o.o. http://gynsoft.net matt@gynsoft.net Krótko o terminach związanych z Android OS... Android OS bazuje na Linuxie, każda aplikacja posiada własne User
Projektowanie, tworzenie aplikacji mobilnych na platformie Android
Program szkolenia: Projektowanie, tworzenie aplikacji mobilnych na platformie Android Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Projektowanie, tworzenie aplikacji mobilnych
SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)
(opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) W informatyce występują ściśle obok siebie dwa pojęcia: sprzęt (ang. hardware) i oprogramowanie
Zarządzanie pamięcią operacyjną zagadnienia podstawowe
Zarządzanie pamięcią operacyjną zagadnienia podstawowe Pamięć jako zasób systemu komputerowego Pamięć jest zasobem służący do przechowywania danych. Z punktu widzenia systemu pamięć jest zasobem o strukturze
Programowanie Systemów Wbudowanych
Programowanie Systemów Wbudowanych Debugowanie z GDB Iwona Kochańska Gdansk University of Technology GNU debugger Identyfikacja i naprawianie błędów to część procesu wytwarzania oprogramowania Techniki
OSGi Agata Hejmej 4.05.2009
OSGi Agata Hejmej 4.05.2009 Plan prezentacji Co to jest OSGi Jakie problemy rozwiązuje Opis standardu Przykładowa aplikacja Podsumowanie korzyści Co to jest OSGi? Standard, który pozwala na tworzenie wysoce
Programowanie na poziomie sprzętu. Tryb chroniony cz. 1
Tryb chroniony cz. 1 Moduł zarządzania pamięcią w trybie chronionym (z ang. PM - Protected Mode) procesorów IA-32 udostępnia: - segmentację, - stronicowanie. Segmentacja mechanizm umożliwiający odizolowanie
Powinieneś: mieć doświadczenie w programowaniu w języku Java znać podstawy zarządzania pamięcią w wirtualnej maszynie
Zarządzanie pamięcią w Sun JVM Artykuł jest próbą uporządkowania wiedzy z zakresu zarządzania pamięcią w wirtualnej maszynie Javy. Opisuje sposoby zarządzania pamięcią, pokazuje jaką rolę w zarządzaniu
Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces
Procesy pojęcia podstawowe 1 1.1 Jak kod źródłowy przekształca się w proces W języku wysokiego poziomu tworzy się tak zwany kod źródłowy który po zapisaniu będzie plikiem z programem źródłowym. Plik źródłowy
Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA
Java w 21 dni / Rogers Cadenhead. Gliwice, cop. 2016 Spis treści O autorze 11 Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA Dzień 1. Rozpoczynamy przygodę z Javą 21 Język Java 21 Programowanie obiektowe 24 Obiekty
Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1
Szkolenie wycofane z oferty Program szkolenia: Enterprise Java Beans 3.0/3.1 Informacje: Nazwa: Enterprise Java Beans 3.0/3.1 Kod: Java-EE-EJB Kategoria: Java EE Grupa docelowa: developerzy Czas trwania:
Programowanie w Javie
Programowanie w Javie Andrzej Czajkowski Lista nr 0 Debugger w Javie Celem ćwiczenia jest poznanie podstawowych funkcji narzędzia debugera (odpluskwiacz) w środowisku Eclipse. Po ukończeniu ćwiczenia student
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
WPROWADZENIE DO JĘZYKA JAVA
WPROWADZENIE DO JĘZYKA JAVA programowanie obiektowe KRÓTKA HISTORIA JĘZYKA JAVA KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny języka java. Pierwsza nazwa Oak (dąb). KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny
ZASADY PROGRAMOWANIA KOMPUTERÓW
POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.
Szkolenie: Testowanie wydajności (Performance Testing)
Szkolenie: Testowanie wydajności (Performance Testing) Testy niefunkcjonalne aplikacji to nieodłączna część pracy dobrego testera. Do tego typu testów zaliczamy między innymi taką właściwość systemu jak
System plików warstwa fizyczna
System plików warstwa fizyczna Dariusz Wawrzyniak Plan wykładu Przydział miejsca na dysku Zarządzanie wolną przestrzenią Implementacja katalogu Przechowywanie podręczne Integralność systemu plików Semantyka