我需要使用JavaScript更新给定时间间隔内的大量数据.问题是,无论我使用什么JS库(甚至是裸骨js),所有浏览器似乎都在每个AJAX请求上分配内存,并且之后无法释放它.这是一个应该重现错误的示例:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Memleak Test</title>
<meta charset="utf-8" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript">
function readData() {
$.getJSON('data.php');
}
$(document).ready(function() {
setInterval(readData, 1000);
});
</script>
</head>
<body>
<div id="content"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
jsbin提供了一个等效的测试页面
以下是有关此内容的更多信息:
看起来很简单,我认为我在这里做了一些非常错误的事情,如果这里的一些JS大师可以帮助我,那就太棒了!
我正在玩javap和一些非常简单的代码,这引发了一个 - 希望很简单 - 的问题.
这是代码优先:
public class Main {
public static void main(String[] args) throws Exception {
System.out.println(m1());
System.out.println(m2());
}
private static String m1() {
return new String("foobar");
}
private static String m2() {
String str = "foobar";
return new String(str);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我编译了代码并查看了输出(现在省略-verbose).
$ javap -c Main.class
Compiled from "Main.java"
public class Main {
public Main();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]) throws java.lang.Exception;
Code:
0: getstatic #2 // …Run Code Online (Sandbox Code Playgroud)