Toon posts:

Java heap en non-heap memory uitleg

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Kan iemand mij in het Nederlands uitleggen wat onderstane termen betekenen en hoe deze te werk gaan (en toegewezen dienen te krijgen)? In het Engels staat het al hier, maar na 10x lezen snap ik het nog niet.
https://stackoverflow.com...-java-memory-pool-divided


- Heap memory
-- Tenured Gen
-- Par Eden Space
-- Par Survivor Space

- Non-heap memory
-- Metaspace
-- Code cache

Alvast bedankt.

Groeten,
Umit

Acties:
  • 0 Henk 'm!

  • acemoo
  • Registratie: Maart 2006
  • Laatst online: 11-10 22:05
Als je begint met uit te leggen wat je nu denkt dat elk deel is, dan kan onze uitleg beter inspelen op wat je al begrijpt en je denk wijze.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nou,

Tevens begrijp ik ook niet alle termen voor Windows ook niet hoor. Misschien dat ik daar wat meer mee moest doen.. Het verschil tussen heap en non-heap is in de URL te lezen, dat is duidelijk.Maar waarom deze gescheiden zijn, wat voor effect het voor een applicatie heeft snap ik niet.

Naar mijn idee:
Er is een X (bijv 8 ) aantal memory aan de OS toegewezen. De applicatie mag in mijn voorbeeld 6GB van de totale memory verbruiken, overige dus 2GB wordt door de OS gebruikt.

De heap memory en non-heap tezamen dienen dan naar mijn gevoel totaal op 6GB geconfigureerd te worden.

Hoe de verhouding moet liggen is mij niet duidelijk, ook niet waarom.

Dank je.

[ Voor 6% gewijzigd door Verwijderd op 23-03-2016 11:19 ]


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 16:50

Hero of Time

Moderator LNX

There is only one Legend

Ik weet niet waarom je dit topic in SWS hebt geopend, maar ik denk dat een ontwikkelaar je meer kan helpen. Mochten ze in de Devschuur® het te eng vinden, vinden je wel weer terug in CSA. SWS > PRG.

Commandline FTW | Tweakt met mate


Acties:
  • +1 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 11-10 16:28

Douweegbertje

Wat kinderachtig.. godverdomme

Hero of Time schreef op woensdag 23 maart 2016 @ 22:24:
Ik weet niet waarom je dit topic in SWS hebt geopend, maar ik denk dat een ontwikkelaar je meer kan helpen. Mochten ze in de Devschuur® het te eng vinden, vinden je wel weer terug in CSA. SWS > PRG.
Afbeeldingslocatie: https://s-media-cache-ak0.pinimg.com/736x/eb/9e/4e/eb9e4ee1bdebac7bdf5c9474e785cca0.jpg

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 11:06
TS, ben je bekend met de JVM en de rol van de garbage collector in java programma's?

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
En wie zien we daar hard wegrennen, was dat niet Douweegbertje :9

Maar @TS : Heb je een concreet probleem of gaat het je meer om de theoretische uitleg?

Want er is geen eenduidige definitie om iets toegewezen te krijgen, daarom is het ook allemaal variabel en in te stellen, het is puur afhankelijk van wat je doel is. Als er een golden bullet was geweest qua instellingen dan was die wel gewoon hardcoded in de JVM gezet...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik ben niet helemaal bekend met de "garbage collector", maar weet wel hoe het ongeveer te werk gaat. Ook heb ik geen probleem mee, maar wil gewoon wat uitleg erover.

Thanks.

[ Voor 4% gewijzigd door Verwijderd op 29-03-2016 10:07 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 11:48

Creepy

Tactical Espionage Splatterer

Als je weet hoe een GC ongeveer werkt, en je combineert dat met het eerste antwoord in het door jouw gelinkte SO topic, welk onderdeel begrijp je dan nog niet?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • +1 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
De verschillende 'generaties' aan heap memory (eden, survivor, tenured) zijn simpelweg een garbage collector optimalisatie. De GC 'checkt' om zoveel tijd objecten om te kijken of deze nog in gebruik zijn. Hoe meer objecten je moet checken hoe meer tijd dit kost. Daarom worden objecten die na X tijd nog in leven zijn naar volgende generaties gepushed. Deze worden minder vaak gecheckt omdat de GC er vanuit gaat dat als een object al 10 seconden bestaat hij de volgende 10 seconden ook nog wel zal bestaan. Dit in tegenstelling tot al de objecten die een lifespan van maar een paar milliseconden hebben.

Non-heap is simpelweg geheugen dat niet beschikbaar is voor het programma maar intern door de virtuele machine gebruikt wordt. Hierin zitten onder andere geladen .class files en andere huishoudelijke informatie.

Als er specifieke zaken zijn die je niet begrijpt moet je d'r ff naar vragen.

https://niels.nu


Acties:
  • +1 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Verwijderd schreef op woensdag 23 maart 2016 @ 11:05:
Naar mijn idee:
Er is een X (bijv 8 ) aantal memory aan de OS toegewezen. De applicatie mag in mijn voorbeeld 6GB van de totale memory verbruiken, overige dus 2GB wordt door de OS gebruikt.
Normaal gesproken mag het OS alle geheugen gebruiken, en is er geen toewijzing. (Virtual Machines zijn de logische uitzondering). Als je 8 GB RAM hebt, dan mag het OS 8 GB RAM gebruiken.

Het OS beslist vervolgens hoe dat geheugen gebruikt wordt. Als Java 6 GB geheugen claimt, maar dat niet efficient gebruikt (vol met garbage), dan zal het OS het naar disk gaan swappen. GC is dus ook een manier om naar het OS te communiceren welke data nog in actief gebruik is en niet geswapt moet worden.

De JVM runt alle applicaties en weet dus niet direct hoeveel geheugen er per applicatie nodig is. Dat kun je dus zelf instellen. Het JVM zal dat dan namens de applicatie aan het OS vragen. Het OS alloceert dan geheugenruimte, geen RAM. Pas als je de geheugenruimte daarwerkelijk gebruikt wordt er gekeken of er RAM beschikbaar is. Allereerst wordt vrij RAM toegewezen, dan gaat Windows de file cache legen, en desnoods wordt er geswapt.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Acties:
  • +1 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Je lijkt wat fundamentele basiskennis te missen. Enkele termen om je op weg te helpen:

Geheugen:
RAM, oftewel werkgeheugen. Wordt gebruikt om code en data van programma's in te bewaren.
• Geheugen is virtueel. Je spreekt nooit direct je RAM aan, maar middels een tussenlaag waarin het OS voorziet. Dit levert de mogelijkheid tot paging.
Memory management and allocation, een programma vraagt aan het OS een stuk geheugen. De JVM is zo'n programma, en regelt dat voor jou, zodat je het niet in Java hoeft te doen. Dit in tegenstelling tot lower-level talen als C.
• Onder water gebeurt dit met [m|c|re]alloc.

Garbage collection:
Garbage collection. Dit laat het voor higher-level talen lijken alsof je een onbeperkte hoeveelheid geheugen hebt - totdat er werkelijk niets meer over is, maar dan heb je een ander probleem.
Garbage collection in Java. Dit wordt door de runtime gedaan, door ongebruikte objecten op te ruimen.
Generational garbage collection, de manier waarop onder andere de runtimes van Java en .NET garbage collection implementeren.

Als je al deze links doorleest, kom je de door jou gezochte termen tegen. Het is niet in twee of drie zinnen volledig en correct uit te leggen wat een "heap" doet.

Maar het lijkt erop dat je een applicatie aan het performance-tunen bent, en alleen maar wil weten hoe groot je de heap mag zetten voor de JVM. Die vraag kan ik niet voor je beantwoorden.

[ Voor 24% gewijzigd door CodeCaster op 29-03-2016 17:33 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...

Pagina: 1