Enviar pesquisa
Carregar
RailswayCon 2010 - Dynamic Language VMs
•
Transferir como ODP, PDF
•
3 gostaram
•
1,168 visualizações
Lourens Naudé
Seguir
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 98
Baixar agora
Recomendados
Compiler Construction | Lecture 13 | Code Generation
Compiler Construction | Lecture 13 | Code Generation
Eelco Visser
How to check valid Email? Find using regex.
How to check valid Email? Find using regex.
Poznań Ruby User Group
Assembler (2)
Assembler (2)
Vaibhav Bajaj
Assembler
Assembler
Jad Matta
07 140430-ipp-languages used in llvm during compilation
07 140430-ipp-languages used in llvm during compilation
Adam Husár
Lecture6
Lecture6
misgina Mengesha
Assembler
Assembler
Mir Majid
Assembler
Assembler
Mohd Arif
Recomendados
Compiler Construction | Lecture 13 | Code Generation
Compiler Construction | Lecture 13 | Code Generation
Eelco Visser
How to check valid Email? Find using regex.
How to check valid Email? Find using regex.
Poznań Ruby User Group
Assembler (2)
Assembler (2)
Vaibhav Bajaj
Assembler
Assembler
Jad Matta
07 140430-ipp-languages used in llvm during compilation
07 140430-ipp-languages used in llvm during compilation
Adam Husár
Lecture6
Lecture6
misgina Mengesha
Assembler
Assembler
Mir Majid
Assembler
Assembler
Mohd Arif
Assembly Language Programming By Ytha Yu, Charles Marut Chap 8 (The Stack and...
Assembly Language Programming By Ytha Yu, Charles Marut Chap 8 (The Stack and...
Bilal Amjad
[ASM]Lab4
[ASM]Lab4
Nora Youssef
Assembly Language Programming By Ytha Yu, Charles Marut Chap 6 (Flow Control ...
Assembly Language Programming By Ytha Yu, Charles Marut Chap 6 (Flow Control ...
Bilal Amjad
Alp 05
Alp 05
gswapnil86
C programming language tutorial
C programming language tutorial
javaTpoint s
Introduction to c programming
Introduction to c programming
gajendra singh
Assembler design options
Assembler design options
Mohd Arif
Assembler design option
Assembler design option
Mohd Arif
'C' language notes (a.p)
'C' language notes (a.p)
Ashishchinu
C Programming Language Step by Step Part 1
C Programming Language Step by Step Part 1
Rumman Ansari
[ASM]Lab6
[ASM]Lab6
Nora Youssef
C LANGUAGE - BESTECH SOLUTIONS
C LANGUAGE - BESTECH SOLUTIONS
BESTECH SOLUTIONS
C programming session8
C programming session8
Keroles karam khalil
Assembly Language Lecture 5
Assembly Language Lecture 5
Motaz Saad
C programming session10
C programming session10
Keroles karam khalil
C Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpoint
JavaTpoint.Com
Assembly Language Programming By Ytha Yu, Charles Marut Chap 4 (Introduction ...
Assembly Language Programming By Ytha Yu, Charles Marut Chap 4 (Introduction ...
Bilal Amjad
Unit 4 assembly language programming
Unit 4 assembly language programming
Kartik Sharma
Introduction to R
Introduction to R
Ben Charoenwong
Assembly language 8086
Assembly language 8086
John Cutajar
Resume
Resume
Anand Mehrotra
実践リーダブルコード - 課題の実装の進め方
実践リーダブルコード - 課題の実装の進め方
Kouhei Sutou
Mais conteúdo relacionado
Mais procurados
Assembly Language Programming By Ytha Yu, Charles Marut Chap 8 (The Stack and...
Assembly Language Programming By Ytha Yu, Charles Marut Chap 8 (The Stack and...
Bilal Amjad
[ASM]Lab4
[ASM]Lab4
Nora Youssef
Assembly Language Programming By Ytha Yu, Charles Marut Chap 6 (Flow Control ...
Assembly Language Programming By Ytha Yu, Charles Marut Chap 6 (Flow Control ...
Bilal Amjad
Alp 05
Alp 05
gswapnil86
C programming language tutorial
C programming language tutorial
javaTpoint s
Introduction to c programming
Introduction to c programming
gajendra singh
Assembler design options
Assembler design options
Mohd Arif
Assembler design option
Assembler design option
Mohd Arif
'C' language notes (a.p)
'C' language notes (a.p)
Ashishchinu
C Programming Language Step by Step Part 1
C Programming Language Step by Step Part 1
Rumman Ansari
[ASM]Lab6
[ASM]Lab6
Nora Youssef
C LANGUAGE - BESTECH SOLUTIONS
C LANGUAGE - BESTECH SOLUTIONS
BESTECH SOLUTIONS
C programming session8
C programming session8
Keroles karam khalil
Assembly Language Lecture 5
Assembly Language Lecture 5
Motaz Saad
C programming session10
C programming session10
Keroles karam khalil
C Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpoint
JavaTpoint.Com
Assembly Language Programming By Ytha Yu, Charles Marut Chap 4 (Introduction ...
Assembly Language Programming By Ytha Yu, Charles Marut Chap 4 (Introduction ...
Bilal Amjad
Unit 4 assembly language programming
Unit 4 assembly language programming
Kartik Sharma
Introduction to R
Introduction to R
Ben Charoenwong
Assembly language 8086
Assembly language 8086
John Cutajar
Mais procurados
(20)
Assembly Language Programming By Ytha Yu, Charles Marut Chap 8 (The Stack and...
Assembly Language Programming By Ytha Yu, Charles Marut Chap 8 (The Stack and...
[ASM]Lab4
[ASM]Lab4
Assembly Language Programming By Ytha Yu, Charles Marut Chap 6 (Flow Control ...
Assembly Language Programming By Ytha Yu, Charles Marut Chap 6 (Flow Control ...
Alp 05
Alp 05
C programming language tutorial
C programming language tutorial
Introduction to c programming
Introduction to c programming
Assembler design options
Assembler design options
Assembler design option
Assembler design option
'C' language notes (a.p)
'C' language notes (a.p)
C Programming Language Step by Step Part 1
C Programming Language Step by Step Part 1
[ASM]Lab6
[ASM]Lab6
C LANGUAGE - BESTECH SOLUTIONS
C LANGUAGE - BESTECH SOLUTIONS
C programming session8
C programming session8
Assembly Language Lecture 5
Assembly Language Lecture 5
C programming session10
C programming session10
C Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpoint
Assembly Language Programming By Ytha Yu, Charles Marut Chap 4 (Introduction ...
Assembly Language Programming By Ytha Yu, Charles Marut Chap 4 (Introduction ...
Unit 4 assembly language programming
Unit 4 assembly language programming
Introduction to R
Introduction to R
Assembly language 8086
Assembly language 8086
Destaque
Resume
Resume
Anand Mehrotra
実践リーダブルコード - 課題の実装の進め方
実践リーダブルコード - 課題の実装の進め方
Kouhei Sutou
Eterotopie Manageriali
Eterotopie Manageriali
Paolo Costa
Publicidad Julio
Publicidad Julio
Cezar Villarroel
Hermandad de la Plaza
Hermandad de la Plaza
m.luisa_18
Php Ppt
Php Ppt
vsnmurthy
Destaque
(6)
Resume
Resume
実践リーダブルコード - 課題の実装の進め方
実践リーダブルコード - 課題の実装の進め方
Eterotopie Manageriali
Eterotopie Manageriali
Publicidad Julio
Publicidad Julio
Hermandad de la Plaza
Hermandad de la Plaza
Php Ppt
Php Ppt
Semelhante a RailswayCon 2010 - Dynamic Language VMs
How it's made: C++ compilers (GCC)
How it's made: C++ compilers (GCC)
Sławomir Zborowski
Clojure concurrency
Clojure concurrency
Alex Navis
Domain Specific Languages In Scala Duse3
Domain Specific Languages In Scala Duse3
Peter Maas
NOSQL and Cassandra
NOSQL and Cassandra
rantav
Introduction to c_plus_plus
Introduction to c_plus_plus
Sayed Ahmed
Introduction to c_plus_plus (6)
Introduction to c_plus_plus (6)
Sayed Ahmed
Ast transformation
Ast transformation
Gagan Agrawal
Otimizando Aplicações em Rails
Otimizando Aplicações em Rails
Juan Maiz
tau 2015 spyrou fpga timing
tau 2015 spyrou fpga timing
Tom Spyrou
Compiler Construction | Lecture 12 | Virtual Machines
Compiler Construction | Lecture 12 | Virtual Machines
Eelco Visser
The Style of C++ 11
The Style of C++ 11
Sasha Goldshtein
Chapter Seven(2)
Chapter Seven(2)
bolovv
New features in Ruby 2.5
New features in Ruby 2.5
Ireneusz Skrobiś
Building a High-Performance Database with Scala, Akka, and Spark
Building a High-Performance Database with Scala, Akka, and Spark
Evan Chan
Advanced procedures in assembly language Full chapter ppt
Advanced procedures in assembly language Full chapter ppt
Muhammad Sikandar Mustafa
Cassandra 2.1 boot camp, Overview
Cassandra 2.1 boot camp, Overview
Joshua McKenzie
Profiling Ruby
Profiling Ruby
Ian Pointer
Summary of C++17 features
Summary of C++17 features
Bartlomiej Filipek
apache-refcard-a4.pdf
apache-refcard-a4.pdf
GiovaRossi
Let's talks about string operations in C++17
Let's talks about string operations in C++17
Bartlomiej Filipek
Semelhante a RailswayCon 2010 - Dynamic Language VMs
(20)
How it's made: C++ compilers (GCC)
How it's made: C++ compilers (GCC)
Clojure concurrency
Clojure concurrency
Domain Specific Languages In Scala Duse3
Domain Specific Languages In Scala Duse3
NOSQL and Cassandra
NOSQL and Cassandra
Introduction to c_plus_plus
Introduction to c_plus_plus
Introduction to c_plus_plus (6)
Introduction to c_plus_plus (6)
Ast transformation
Ast transformation
Otimizando Aplicações em Rails
Otimizando Aplicações em Rails
tau 2015 spyrou fpga timing
tau 2015 spyrou fpga timing
Compiler Construction | Lecture 12 | Virtual Machines
Compiler Construction | Lecture 12 | Virtual Machines
The Style of C++ 11
The Style of C++ 11
Chapter Seven(2)
Chapter Seven(2)
New features in Ruby 2.5
New features in Ruby 2.5
Building a High-Performance Database with Scala, Akka, and Spark
Building a High-Performance Database with Scala, Akka, and Spark
Advanced procedures in assembly language Full chapter ppt
Advanced procedures in assembly language Full chapter ppt
Cassandra 2.1 boot camp, Overview
Cassandra 2.1 boot camp, Overview
Profiling Ruby
Profiling Ruby
Summary of C++17 features
Summary of C++17 features
apache-refcard-a4.pdf
apache-refcard-a4.pdf
Let's talks about string operations in C++17
Let's talks about string operations in C++17
Mais de Lourens Naudé
ZeroMQ as scriptable sockets
ZeroMQ as scriptable sockets
Lourens Naudé
TX/RX 101: Transfer data efficiently
TX/RX 101: Transfer data efficiently
Lourens Naudé
In the Loop - Lone Star Ruby Conference
In the Loop - Lone Star Ruby Conference
Lourens Naudé
EuRuKo 2011 - In the Loop
EuRuKo 2011 - In the Loop
Lourens Naudé
Event Driven Architecture
Event Driven Architecture
Lourens Naudé
RailswayCon 2010 - Command Your Domain
RailswayCon 2010 - Command Your Domain
Lourens Naudé
Barcamp PT
Barcamp PT
Lourens Naudé
Railswaycon Inside Matz Ruby
Railswaycon Inside Matz Ruby
Lourens Naudé
Embracing Events
Embracing Events
Lourens Naudé
Mais de Lourens Naudé
(9)
ZeroMQ as scriptable sockets
ZeroMQ as scriptable sockets
TX/RX 101: Transfer data efficiently
TX/RX 101: Transfer data efficiently
In the Loop - Lone Star Ruby Conference
In the Loop - Lone Star Ruby Conference
EuRuKo 2011 - In the Loop
EuRuKo 2011 - In the Loop
Event Driven Architecture
Event Driven Architecture
RailswayCon 2010 - Command Your Domain
RailswayCon 2010 - Command Your Domain
Barcamp PT
Barcamp PT
Railswaycon Inside Matz Ruby
Railswaycon Inside Matz Ruby
Embracing Events
Embracing Events
Último
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
wesley chun
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
HampshireHUG
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Drew Madelung
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Enterprise Knowledge
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
debabhi2
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Martijn de Jong
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Neo4j
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
Antenna Manufacturer Coco
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
The Digital Insurer
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Maria Levchenko
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Radu Cotescu
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Anna Loughnan Colquhoun
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Igalia
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Khem
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Gabriella Davis
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Delhi Call girls
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Puma Security, LLC
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Michael W. Hawkins
Último
(20)
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
RailswayCon 2010 - Dynamic Language VMs
1.
2.
3.
Well versed full
stack
4.
5.
Large whitelabel clients
6.
Bursty traffic –
Lady Gaga, EA, Gatorade etc.
7.
8.
9.
10.
11.
12.
Time
13.
14.
Serialization / coercion
(CPU)
15.
VM – allocation,
symbol tables etc. (CPU + mem)
16.
Business requirements (CPU)
17.
18.
19.
20.
Memory – local
21.
Disk - local
22.
23.
Serialization + conversion
(CPU)
24.
Object instantiation (CPU
+ memory)
25.
Optional memcached (local
or remote memory)
26.
27.
28.
29.
30.
31.
32.
Opcodes / instructions
33.
Dispatch
34.
35.
Garbage Collection
36.
Contexts and control
flow
37.
Concurrency
38.
39.
40.
41.
Object model
42.
Garbage Collection
43.
44.
Faster runtime
45.
46.
47.
48.
Annotations attach semantics
to nodes
49.
50.
Method calls, arguments
and return values
51.
Jumps – if,
else, iterators
52.
Unconditional jumps –
exceptions, retry etc.
53.
54.
Reduces a tree
to a linear and ordered instruction set
55.
56.
Codegen, nodes ->
instruction sequences
57.
Postprocessing – replace
with optimal instruction sequences (peephole optimization)
58.
Pre and postprocessing
phases may be multiple passes
59.
60.
61.
62.
Table defaults: 11
bins, 5 entries per bin
63.
Bins++, sequential lookup
inside bins
64.
65.
!(String || Symbol),
points to a table entry
66.
Developer identifies by
name, VM by int
67.
Immutable for performance
– watch out for memory
68.
69.
70.
Generated from definitions
at interpreter compile time (existing ruby requirement for 1.9)
71.
72.
class / module:
definition
73.
method / iterator:
invoke method, call block
74.
Optimization: redefines common
+, <<, * contracts
75.
76.
Move / copy
values, top of stack -> elsewhere
77.
78.
Put strings “a”,
“b” and “c” on the stack
79.
Fetch top 3
stack elements
80.
Create an array
from them
81.
82.
Optimizing simple instructions
is very important
83.
84.
Switch Dispatch :
slower, but portable
85.
86.
87.
Forth, Python 3
88.
89.
Up to 50%
slower than Threaded dispatch
90.
Portable
91.
92.
93.
constant removal
94.
method definition
95.
method removal
96.
method cache changes
(covered later)
97.
98.
99.
100.
Constants can be
redefined
101.
Open classes –
variable method table
102.
Object#method_missing
103.
No explicit return
types
104.
105.
Constant propagation
106.
Dead code elimination
107.
Subexpression elimination
108.
Method in-lining
109.
Cloning
110.
Peephole Optimization
111.
* not all
implemented in YARV
112.
113.
2 * 1
# 2
114.
2 ** 2
# 2 *2
115.
class Fixnum
116.
def +(*args) #
dynamic Ruby spec
117.
end
118.
end
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
Command and Query
pattern
130.
131.
132.
RBASIC(obj)->flags
133.
134.
marked
135.
tainted
136.
embedded status
137.
138.
139.
140.
Class / module
distinction through flags
141.
142.
nil #=> 4
143.
true #=> 2
144.
false #=> 0
145.
Symbols
146.
Fixnums <= 30
bits
147.
Floats and Bignum
are complex objects – hence poor Floating Point benchmarks
148.
RFLOAT(float_obj)->float_value #=> a
double
149.
150.
Objects, even, multiples
of 4
151.
Symbols, even, multiples
of 8
152.
Integers, odd
153.
Immediates <= 4
154.
155.
156.
allocates slightly more
data than required
157.
Avoids malloc, realloc
and memmove overhead
158.
Short strings “str”
159.
Short arrays %w(a
r y)
160.
161.
162.
Open classes
163.
Method calls can
never be reduced to CALL(a_method)
164.
165.
Dispatch sequence
166.
Deref class pointer
167.
Check methods table
168.
Call method or
delegate to superclass
169.
170.
171.
Send query /
command messages to objects
172.
173.
95% hit rate
when warm
174.
Method redefinition, module
inclusion etc. clears the method cache / “routing table”
175.
Introduces significant overhead
for subsequent method calls
176.
177.
# busts method
cache for the whole VM
178.
@user.extend SomeBehavior
179.
end
180.
end
181.
182.
183.
184.
185.
186.
Ivar table is
shared by all instances of the same class
187.
Saves on memory
footprint of a table per instance
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
Hands out objects
while heap space is available
201.
Halts execution to
reclaim memory
202.
203.
Smoother, but with
some minor overhead
204.
Suitable for hard
realtime environments
205.
206.
Assumes remainder is
for collection
207.
208.
1 active, 1
inactive
209.
Copies reachable chunks
to the new active area
210.
Concerned with live
objects
211.
212.
Dangling pointers
213.
214.
Knowledge of pointer
layout and chunks required
215.
216.
Composed of multiple
slots
217.
Freed when empty
...
218.
IF all slots
is tagged as being free
219.
A Rails app
allocates 4 to 6 heaps on startup
220.
221.
222.
223.
224.
Defaults to 10
000 slots for the first heap
225.
Threshold of 4096
free slots per heap
226.
227.
That's why memory
consumption's so high ...
228.
229.
>> 8 *
1.8 * 1.8
230.
=> 25.92
231.
>> 8 *
1.8 * 1.8 * 1.8
232.
=> 46.656
233.
>> 8 *
1.8 * 1.8 * 1.8 * 1.8
234.
=> 83.9808
235.
236.
=> 151.16544
237.
>> 8 *
1.8 * 1.8 * 1.8 * 1.8 * 1.8 * 1.8
238.
=> 272.097792
239.
>> 8 *
1.8 * 1.8 * 1.8 * 1.8 * 1.8 * 1.8 * 1.8
240.
=> 489.7760256
241.
242.
struct {
243.
VALUE flags; /*
0 when free */
244.
struct RVALUE *next;
245.
}free;
246.
struct RObject object;
247.
struct RFloat float;
248.
...
249.
250.
RVALUE union can
accommodate any ruby object
251.
Frames, variable structures
etc. well defined also
252.
40 bytes (64
bit arch) represents a slot
253.
Free list points
to the next free slot
254.
255.
256.
257.
258.
Sweep phase: iterates
through the object space and …
259.
free all objects
not marked
260.
unmark marked objects
261.
262.
Work proportional to
heap size
263.
Prone to memory
fragmentation (no compaction)
264.
265.
Every 8MB allocated
triggers GC
266.
Not enough heap
reserve
267.
268.
ary2 = %w(d
e f)
269.
# both ary1
and ary2 is reachable
270.
ary1 = nil
271.
# ary1 and
it's contents is unreachable
272.
273.
274.
275.
276.
Expensive to account
for long lived objects
277.
278.
These “sub heaps”
are referred to as generations
279.
Perform a full
GC only when the youngest generation
280.
fails to meet
memory requirements
281.
282.
283.
Ruby Thread ==
pthread
284.
285.
Much more expensive
to spawn and switch than green threads
286.
Global VM Lock
(GVL)
287.
288.
Blocking operations should
release the GVL
289.
Automatically released when
scheduled
290.
C extensions :
author does not concern with syncronization
291.
292.
DNS resolution or
connects
293.
294.
Process.waitpid
295.
File locks
296.
297.
298.
Cannot access VALUEs
(objects) in blocking functions
299.
No integration with
Ruby's exception / error handler
300.
301.
Very fast user
space context switches
302.
Cooperative scheduling required
303.
304.
Blocking I/0 -
Neverblock
305.
306.
Sandboxed per VM
application state
307.
Distribute VMs across
available cores
308.
Message passing for
inter VM communication
309.
Most Ruby deployments
aren't thread safe
310.
MVM is well
suited for this
311.
Baixar agora