Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5390916

Browse files
修改一些语句
修改一些不合适的语句
1 parent 712391e commit 5390916

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

‎contents/creating-a-memory-leak-with-java.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,18 @@
2121
上述方式可以达到内存泄漏的目的,因为 ThreadLocal 存储了一个指向类B对象的引用,
2222
而该对象又保存了一个指向其类的引用,这个类又保存了一个指向其ClassLoader的引用,
2323
而ClassLoader又保存了一个通过它加载的所有类的引用。
24-
这种方法在许多的JVM的实现中表现很糟糕,因为Classes和ClassLoader被直接存储在老年代(permgen)并且永远都不会被GC处理。
24+
这种方法在许多的JVM的实现中表现更糟糕,因为Classes和ClassLoader被直接存储在老年代(permgen)并且永远都不会被GC处理。
2525

2626
******************************下方为个人理解************************************
2727

28-
通过一个简单的图来描述上述关系:
28+
通过一个简单的图来描述上述关系:<br>
2929
ThreadLocal.obj ---> B.obj ---> B.class <--> ClassLoader.obj<br>
3030
注:上图的\*.obj表示\*类的一个实例对象,B.class表示类B的Class对象
3131

3232
******************************上方为个人理解************************************
3333

34-
这个模式的一个变形:为什么应用容器(例如Tomcat)可以像筛子一样泄漏内存,如果你频繁的重新部署那些可能使用ThreadLocals的应用
35-
因为应用容器使用上述所说的线程,每次重新部署应用是,应用容器都会使用一个新的ClassLoader。
34+
这个模式的一个变形:如果频繁的重新部署那些可能使用ThreadLocals的应用,应用容器(例如Tomcat)就会像筛子一样泄漏内存
35+
因为应用容器使用上述所说的线程,每次重新部署应用时,应用容器都会使用一个新的ClassLoader。
3636

3737
具体代码可以参考:https://gist.github.com/dpryden/b2bb29ee2d146901b4ae
3838

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /