Memory Leaks article (#2142)

* Create memory-leaks module

* Memory Leaks

* Added str.intern()

* Memory Leaks updated
This commit is contained in:
maibin
2017-06-28 21:13:10 +02:00
committed by Eugen
parent 7ee3e57727
commit 4f5ccb906f
4 changed files with 5527 additions and 0 deletions
@@ -0,0 +1,11 @@
package com.baeldung;
public class Key {
public static String key;
public Key(String key) {
Key.key = key;
}
}
@@ -0,0 +1,86 @@
//package com.baeldung;
//
//import java.io.BufferedReader;
//import java.io.File;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.InputStreamReader;
//import java.net.URISyntaxException;
//import java.net.URL;
//import java.net.URLConnection;
//import java.nio.charset.StandardCharsets;
//import java.nio.file.Files;
//import java.nio.file.Paths;
//import java.nio.file.StandardOpenOption;
//import java.util.ArrayList;
//import java.util.Map;
//import java.util.Random;
//import java.util.Scanner;
//
//import org.junit.FixMethodOrder;
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.junit.runners.JUnit4;
//import org.junit.runners.MethodSorters;
//
//@FixMethodOrder(MethodSorters.NAME_ASCENDING)
//@RunWith(JUnit4.class)
//public class MemoryLeaksTest {
// private Random random = new Random();
// public static final ArrayList<Double> list = new ArrayList<Double>(1000000);
//
// @Test(expected = OutOfMemoryError.class)
// public void givenStaticField_whenLotsOfOperations_thenMemoryLeak() throws InterruptedException {
// while (true) {
// int k = random.nextInt(100000);
// System.out.println(k);
// Thread.sleep(10000); //to allow GC do its job
// for (int i = 0; i < k; i++) {
// list.add(random.nextDouble());
// }
// }
//
// }
//
// @SuppressWarnings({ "resource" })
// @Test(expected = OutOfMemoryError.class)
// public void givenLengthString_whenIntern_thenOutOfMemory() throws IOException {
// String str = new Scanner(new File("src/test/resources/large.txt"), "UTF-8").useDelimiter("\\A")
// .next();
// str.intern();
// System.out.println("Done");
// }
// @Test(expected = OutOfMemoryError.class)
// public void givenURL_whenUnclosedStream_thenOutOfMemory() throws IOException, URISyntaxException {
// String str = "";
// URLConnection conn = new URL("http://norvig.com/big.txt").openConnection();
// BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
// while (br.readLine() != null) {
// str += br.readLine();
// }
// Files.write(Paths.get("src/main/resources/"), str.getBytes(), StandardOpenOption.CREATE);
// }
//
// @SuppressWarnings("unused")
// @Test(expected = OutOfMemoryError.class)
// public void givenConnection_whenUnclosed_thenOutOfMemory() throws IOException, URISyntaxException {
// URL url = new URL("ftp://speedtest.tele2.net");
// URLConnection urlc = url.openConnection();
// InputStream is = urlc.getInputStream();
// String str = "";
// while (true) {
// str += is.toString()
// .intern();
// }
// }
//
// @Test(expected = OutOfMemoryError.class)
// public void givenMap_whenNoEqualsNoHashCodeMethods_thenOutOfMemory() throws IOException, URISyntaxException {
// Map<Object, Object> map = System.getProperties();
// while (true) {
// map.put(new Key("key"), "value");
// }
// }
//}