initial commit
This commit is contained in:
commit
04e0dd6a44
1 changed files with 64 additions and 0 deletions
64
index.html
Normal file
64
index.html
Normal file
|
@ -0,0 +1,64 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Massive memory allocation test</title>
|
||||
</head>
|
||||
<h1>
|
||||
<h1>Massive memory allocation test</h1>
|
||||
|
||||
<p>
|
||||
Allocates 16-MiB ArrayBuffers until something stops it.
|
||||
May crash your system or make it sluggish.
|
||||
</p>
|
||||
|
||||
<div id="status">Ready to start.</div>
|
||||
<div><button id="start">Start</button></div>
|
||||
<script async>
|
||||
function el(id) {
|
||||
return document.getElementById(id);
|
||||
}
|
||||
const status = el('status');
|
||||
const button = el('start');
|
||||
let running = false;
|
||||
let count = 0;
|
||||
|
||||
// Give us 16 megs of randomized memory
|
||||
// to defeat compression.
|
||||
const mib = 1024 * 1024;
|
||||
const chunk = 16 * mib;
|
||||
const block = new Uint8Array(chunk);
|
||||
for (let i = 0; i < block.length; i++) {
|
||||
block[i] = Math.round(Math.random() * 255);
|
||||
}
|
||||
let blocks = [];
|
||||
function alloc() {
|
||||
blocks.push(block.slice());
|
||||
count++;
|
||||
status.textContent = `${count * chunk / mib} MiB allocated`;
|
||||
}
|
||||
let timeout = null;
|
||||
function schedule() {
|
||||
timeout = setTimeout(() => {
|
||||
alloc();
|
||||
schedule();
|
||||
});
|
||||
}
|
||||
function cancel() {
|
||||
clearTimeout(timeout);
|
||||
timeout = null;
|
||||
}
|
||||
button.addEventListener('click', function(event) {
|
||||
if (running) {
|
||||
button.textContent = 'Start';
|
||||
running = false;
|
||||
cancel();
|
||||
} else {
|
||||
button.textContent = 'Stop';
|
||||
running = true;
|
||||
schedule();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue