File tree 1 file changed +15
-12
lines changed
1 file changed +15
-12
lines changed Original file line number Diff line number Diff line change @@ -25,8 +25,20 @@ public Bundle()
25
25
26
26
public void clear ( )
27
27
{
28
- stream = MemoryStream . createObject ( ) ;
29
- streamList = new List < MemoryStream > ( ) ;
28
+ // 把不用的MemoryStream放回缓冲池,以减少垃圾回收的消耗
29
+ for ( int i = 0 ; i < streamList . Count ; ++ i )
30
+ {
31
+ if ( stream != streamList [ i ] )
32
+ streamList [ i ] . reclaimObject ( ) ;
33
+ }
34
+
35
+ streamList . Clear ( ) ;
36
+
37
+ if ( stream != null )
38
+ stream . clear ( ) ;
39
+ else
40
+ stream = MemoryStream . createObject ( ) ;
41
+
30
42
numMessage = 0 ;
31
43
messageLength = 0 ;
32
44
msgtype = null ;
@@ -110,21 +122,12 @@ public void send(NetworkInterface networkInterface)
110
122
Dbg . ERROR_MSG ( "Bundle::send: networkInterface invalid!" ) ;
111
123
}
112
124
113
- // 把不用的MemoryStream放回缓冲池,以减少垃圾回收的消耗
114
- for ( int i = 0 ; i < streamList . Count ; ++ i )
115
- {
116
- streamList [ i ] . reclaimObject ( ) ;
117
- }
118
-
119
- streamList . Clear ( ) ;
120
- stream . clear ( ) ;
121
-
122
125
// 我们认为,发送完成,就视为这个bundle不再使用了,
123
126
// 所以我们会把它放回对象池,以减少垃圾回收带来的消耗,
124
127
// 如果需要继续使用,应该重新Bundle.createObject(),
125
128
// 如果外面不重新createObject()而直接使用,就可能会出现莫名的问题,
126
129
// 仅以此备注,警示使用者。
127
- Bundle . reclaimObject ( this ) ;
130
+ reclaimObject ( ) ;
128
131
}
129
132
130
133
public void checkStream ( int v )
You can’t perform that action at this time.
0 commit comments