Suche senden
Hochladen
RailswayCon 2010 - Dynamic Language VMs
•
Als ODP, PDF herunterladen
•
3 gefällt mir
•
1,168 views
Lourens Naudé
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 98
Jetzt herunterladen
Empfohlen
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
Empfohlen
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
Weitere ähnliche Inhalte
Was ist angesagt?
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
Was ist angesagt?
(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
Andere mochten auch
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
Andere mochten auch
(6)
Resume
Resume
実践リーダブルコード - 課題の実装の進め方
実践リーダブルコード - 課題の実装の進め方
Eterotopie Manageriali
Eterotopie Manageriali
Publicidad Julio
Publicidad Julio
Hermandad de la Plaza
Hermandad de la Plaza
Php Ppt
Php Ppt
Ähnlich wie 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
Ähnlich wie 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
Mehr von 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é
Mehr von 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
Kürzlich hochgeladen
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Fwdays
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
Stephanie Beckett
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
Sergiu Bodiu
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Lonnie McRorey
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
Hervé Boutemy
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
Fwdays
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Curtis Poe
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
Alex Barbosa Coqueiro
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Mark Billinghurst
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
UiPathCommunity
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
RankYa
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
Miki Katsuragi
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
Fwdays
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
Manik S Magar
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
NavinnSomaal
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
comworks
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
Dilum Bandara
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
gvaughan
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
Alan Dix
Kürzlich hochgeladen
(20)
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
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.
Jetzt herunterladen