我发现我的一个进程(约 90 个线程)使用 >8G 内存,我认为它不需要这么大。
因此,我阅读了/proc/{pid}/maps、/proc/{pid}/smaps和pstack {pid} >。我想知道那些大的 63M+508K 区域是怎么来的,它们有什么用,我可以通过某种方式消除它们来减少我的内存使用量吗?
我发现这些区域几乎分为三类:
4xxx000-4xxxx000:线程堆栈? 313xxxx000-313xxxx000:lib 文本和数据? 2xxxxxxxx000-2xxxxxxxx000:许多令人困惑的 (64M+...+63M+508K) block 。这种区域的数量与线程的数量非常接近。那么这些大区域与线程有关吗?这是我合并 /proc/{pid}/maps 和 pstack {pid} 的结果后的结果 | grep线程:
(我将 *Thread ?? (Thread 0x@@@@@@@@@ (LWP !!!!))* 放在每个区域的末尾,如果 0x@@@@@@@ 位于该区域内(我猜 @@@@ 是线程堆栈基础,因此该区域是线程堆栈的区域。)
Region 0: 18M, 00400000-01675000 r-xp 00000000 08:02 5401 /mybinary
Region 1: 236K, 01875000-018b0000 rw-p 01275000 08:02 5401 /mybinary
Region 2: 456K, 018b0000-01922000 rw-p 018b0000 00:00 0
Region 3: 741M, 11b46000-4006c000 rw-p 11b46000 00:00 0 [heap]
Region 4: 4K, 40084000-40085000 ---p 40084000 00:00 0
Region 5: 512K, 40085000-40105000 rw-p 40085000 00:00 0 *Thread 53 (Thread 0x40104940 (LWP 1281))*
Region 6: 4K, 40222000-40223000 ---p 40222000 00:00 0
Region 7: 512K, 40223000-402a3000 rw-p 40223000 00:00 0 *Thread 57 (Thread 0x402a2940 (LWP 1277))*
Region 8: 4K, 40338000-40339000 ---p 40338000 00:00 0
Region 9: 512K, 40339000-403b9000 rw-p 40339000 00:00 0 *Thread 52 (Thread 0x403b8940 (LWP 1282))*
Region 10: 4K, 403b9000-403ba000 ---p 403b9000 00:00 0
Region 11: 1M, 403ba000-404ba000 rw-p 403ba000 00:00 0 *Thread 31 (Thread 0x404b9940 (LWP 1303))*
Region 12: 4K, 404ba000-404bb000 ---p 404ba000 00:00 0
Region 13: 1M, 404bb000-405bb000 rw-p 404bb000 00:00 0 *Thread 2 (Thread 0x405ba940 (LWP 26786))*
Region 14: 4K, 40759000-4075a000 ---p 40759000 00:00 0
Region 15: 512K, 4075a000-407da000 rw-p 4075a000 00:00 0 *Thread 84 (Thread 0x407d9940 (LWP 1239))*
Region 16: 4K, 407da000-407db000 ---p 407da000 00:00 0
Region 17: 512K, 407db000-4085b000 rw-p 407db000 00:00 0 *Thread 51 (Thread 0x4085a940 (LWP 1283))*
Region 18: 4K, 4085b000-4085c000 ---p 4085b000 00:00 0
Region 19: 1M, 4085c000-4095c000 rw-p 4085c000 00:00 0 *Thread 50 (Thread 0x4095b940 (LWP 1284))*
Region 20: 4K, 4095c000-4095d000 ---p 4095c000 00:00 0
Region 21: 512K, 4095d000-409dd000 rw-p 4095d000 00:00 0 *Thread 32 (Thread 0x409dc940 (LWP 1302))*
Region 22: 4K, 409dd000-409de000 ---p 409dd000 00:00 0
Region 23: 1M, 409de000-40ade000 rw-p 409de000 00:00 0 *Thread 24 (Thread 0x40add940 (LWP 26764))*
Region 24: 4K, 40b9f000-40ba0000 ---p 40b9f000 00:00 0
Region 25: 1M, 40ba0000-40ca0000 rw-p 40ba0000 00:00 0 *Thread 83 (Thread 0x40c9f940 (LWP 1240))*
Region 26: 4K, 40ca0000-40ca1000 ---p 40ca0000 00:00 0
Region 27: 1M, 40ca1000-40da1000 rw-p 40ca1000 00:00 0 *Thread 82 (Thread 0x40da0940 (LWP 1241))*
Region 28: 4K, 40da1000-40da2000 ---p 40da1000 00:00 0
Region 29: 1M, 40da2000-40ea2000 rw-p 40da2000 00:00 0 *Thread 30 (Thread 0x40ea1940 (LWP 1304))*
Region 30: 4K, 40eea000-40eeb000 ---p 40eea000 00:00 0
Region 31: 1M, 40eeb000-40feb000 rw-p 40eeb000 00:00 0 *Thread 87 (Thread 0x40fea940 (LWP 1235))*
Region 32: 4K, 40feb000-40fec000 ---p 40feb000 00:00 0
Region 33: 512K, 40fec000-4106c000 rw-p 40fec000 00:00 0 *Thread 47 (Thread 0x4106b940 (LWP 1287))*
Region 34: 4K, 4106c000-4106d000 ---p 4106c000 00:00 0
Region 35: 1M, 4106d000-4116d000 rw-p 4106d000 00:00 0 *Thread 23 (Thread 0x4116c940 (LWP 26765))*
Region 36: 4K, 41218000-41219000 ---p 41218000 00:00 0
Region 37: 1M, 41219000-41319000 rw-p 41219000 00:00 0 *Thread 81 (Thread 0x41318940 (LWP 1242))*
Region 38: 4K, 41319000-4131a000 ---p 41319000 00:00 0
Region 39: 512K, 4131a000-4139a000 rw-p 4131a000 00:00 0 *Thread 62 (Thread 0x41399940 (LWP 1263))*
Region 40: 4K, 4139a000-4139b000 ---p 4139a000 00:00 0
Region 41: 1M, 4139b000-4149b000 rw-p 4139b000 00:00 0 *Thread 61 (Thread 0x4149a940 (LWP 1264))*
Region 42: 4K, 4154b000-4154c000 ---p 4154b000 00:00 0
Region 43: 1M, 4154c000-4164c000 rw-p 4154c000 00:00 0 *Thread 71 (Thread 0x4164b940 (LWP 1252))*
Region 44: 4K, 4168b000-4168c000 ---p 4168b000 00:00 0
Region 45: 1M, 4168c000-4178c000 rw-p 4168c000 00:00 0 *Thread 89 (Thread 0x4178b940 (LWP 1233))*
Region 46: 4K, 4178c000-4178d000 ---p 4178c000 00:00 0
Region 47: 1M, 4178d000-4188d000 rw-p 4178d000 00:00 0 *Thread 88 (Thread 0x4188c940 (LWP 1234))*
Region 48: 4K, 4188d000-4188e000 ---p 4188d000 00:00 0
Region 49: 1M, 4188e000-4198e000 rw-p 4188e000 00:00 0 *Thread 70 (Thread 0x4198d940 (LWP 1253))*
Region 50: 4K, 4198e000-4198f000 ---p 4198e000 00:00 0
Region 51: 1M, 4198f000-41a8f000 rw-p 4198f000 00:00 0 *Thread 69 (Thread 0x41a8e940 (LWP 1254))*
Region 52: 4K, 41a8f000-41a90000 ---p 41a8f000 00:00 0
Region 53: 1M, 41a90000-41b90000 rw-p 41a90000 00:00 0 *Thread 68 (Thread 0x41b8f940 (LWP 1255))*
Region 54: 4K, 41b90000-41b91000 ---p 41b90000 00:00 0
Region 55: 1M, 41b91000-41c91000 rw-p 41b91000 00:00 0 *Thread 67 (Thread 0x41c90940 (LWP 1256))*
Region 56: 4K, 41c91000-41c92000 ---p 41c91000 00:00 0
Region 57: 512K, 41c92000-41d12000 rw-p 41c92000 00:00 0 *Thread 66 (Thread 0x41d11940 (LWP 1257))*
Region 58: 4K, 41d30000-41d31000 ---p 41d30000 00:00 0
Region 59: 512K, 41d31000-41db1000 rw-p 41d31000 00:00 0 *Thread 86 (Thread 0x41db0940 (LWP 1237))*
Region 60: 4K, 41db1000-41db2000 ---p 41db1000 00:00 0
Region 61: 512K, 41db2000-41e32000 rw-p 41db2000 00:00 0 *Thread 85 (Thread 0x41e31940 (LWP 1238))*
Region 62: 4K, 41e32000-41e33000 ---p 41e32000 00:00 0
Region 63: 1M, 41e33000-41f33000 rw-p 41e33000 00:00 0 *Thread 64 (Thread 0x41f32940 (LWP 1261))*
Region 64: 4K, 41f33000-41f34000 ---p 41f33000 00:00 0
Region 65: 512K, 41f34000-41fb4000 rw-p 41f34000 00:00 0 *Thread 63 (Thread 0x41fb3940 (LWP 1262))*
Region 66: 4K, 41fb7000-41fb8000 ---p 41fb7000 00:00 0
Region 67: 1M, 41fb8000-420b8000 rw-p 41fb8000 00:00 0 *Thread 80 (Thread 0x420b7940 (LWP 1243))*
Region 68: 4K, 420b8000-420b9000 ---p 420b8000 00:00 0
Region 69: 1M, 420b9000-421b9000 rw-p 420b9000 00:00 0 *Thread 79 (Thread 0x421b8940 (LWP 1244))*
Region 70: 4K, 421b9000-421ba000 ---p 421b9000 00:00 0
Region 71: 1M, 421ba000-422ba000 rw-p 421ba000 00:00 0 *Thread 78 (Thread 0x422b9940 (LWP 1245))*
Region 72: 4K, 422ba000-422bb000 ---p 422ba000 00:00 0
Region 73: 1M, 422bb000-423bb000 rw-p 422bb000 00:00 0 *Thread 77 (Thread 0x423ba940 (LWP 1246))*
Region 74: 4K, 423bb000-423bc000 ---p 423bb000 00:00 0
Region 75: 1M, 423bc000-424bc000 rw-p 423bc000 00:00 0 *Thread 76 (Thread 0x424bb940 (LWP 1247))*
Region 76: 4K, 424bc000-424bd000 ---p 424bc000 00:00 0
Region 77: 1M, 424bd000-425bd000 rw-p 424bd000 00:00 0 *Thread 75 (Thread 0x425bc940 (LWP 1248))*
Region 78: 4K, 425bd000-425be000 ---p 425bd000 00:00 0
Region 79: 1M, 425be000-426be000 rw-p 425be000 00:00 0 *Thread 74 (Thread 0x426bd940 (LWP 1249))*
Region 80: 4K, 426be000-426bf000 ---p 426be000 00:00 0
Region 81: 1M, 426bf000-427bf000 rw-p 426bf000 00:00 0 *Thread 73 (Thread 0x427be940 (LWP 1250))*
Region 82: 4K, 427bf000-427c0000 ---p 427bf000 00:00 0
Region 83: 1M, 427c0000-428c0000 rw-p 427c0000 00:00 0 *Thread 72 (Thread 0x428bf940 (LWP 1251))*
Region 84: 4K, 428c0000-428c1000 ---p 428c0000 00:00 0
Region 85: 1M, 428c1000-429c1000 rw-p 428c1000 00:00 0 *Thread 65 (Thread 0x429c0940 (LWP 1260))*
Region 86: 4K, 429c1000-429c2000 ---p 429c1000 00:00 0
Region 87: 1M, 429c2000-42ac2000 rw-p 429c2000 00:00 0 *Thread 60 (Thread 0x42ac1940 (LWP 1265))*
Region 88: 4K, 42ac2000-42ac3000 ---p 42ac2000 00:00 0
Region 89: 1M, 42ac3000-42bc3000 rw-p 42ac3000 00:00 0 *Thread 59 (Thread 0x42bc2940 (LWP 1266))*
Region 90: 4K, 42bc3000-42bc4000 ---p 42bc3000 00:00 0
Region 91: 512K, 42bc4000-42c44000 rw-p 42bc4000 00:00 0 *Thread 58 (Thread 0x42c43940 (LWP 1267))*
Region 92: 4K, 42c44000-42c45000 ---p 42c44000 00:00 0
Region 93: 1M, 42c45000-42d45000 rw-p 42c45000 00:00 0 *Thread 56 (Thread 0x42d44940 (LWP 1278))*
Region 94: 4K, 42d45000-42d46000 ---p 42d45000 00:00 0
Region 95: 1M, 42d46000-42e46000 rw-p 42d46000 00:00 0 *Thread 55 (Thread 0x42e45940 (LWP 1279))*
Region 96: 4K, 42e46000-42e47000 ---p 42e46000 00:00 0
Region 97: 1M, 42e47000-42f47000 rw-p 42e47000 00:00 0 *Thread 54 (Thread 0x42f46940 (LWP 1280))*
Region 98: 4K, 42f47000-42f48000 ---p 42f47000 00:00 0
Region 99: 1M, 42f48000-43048000 rw-p 42f48000 00:00 0 *Thread 49 (Thread 0x43047940 (LWP 1285))*
Region 100: 4K, 43048000-43049000 ---p 43048000 00:00 0
Region 101: 1M, 43049000-43149000 rw-p 43049000 00:00 0 *Thread 48 (Thread 0x43148940 (LWP 1286))*
Region 102: 4K, 43149000-4314a000 ---p 43149000 00:00 0
Region 103: 1M, 4314a000-4324a000 rw-p 4314a000 00:00 0 *Thread 46 (Thread 0x43249940 (LWP 1288))*
Region 104: 4K, 4324a000-4324b000 ---p 4324a000 00:00 0
Region 105: 1M, 4324b000-4334b000 rw-p 4324b000 00:00 0 *Thread 45 (Thread 0x4334a940 (LWP 1289))*
Region 106: 4K, 4334b000-4334c000 ---p 4334b000 00:00 0
Region 107: 1M, 4334c000-4344c000 rw-p 4334c000 00:00 0 *Thread 44 (Thread 0x4344b940 (LWP 1290))*
Region 108: 4K, 4344c000-4344d000 ---p 4344c000 00:00 0
Region 109: 1M, 4344d000-4354d000 rw-p 4344d000 00:00 0 *Thread 43 (Thread 0x4354c940 (LWP 1291))*
Region 110: 4K, 4354d000-4354e000 ---p 4354d000 00:00 0
Region 111: 1M, 4354e000-4364e000 rw-p 4354e000 00:00 0 *Thread 42 (Thread 0x4364d940 (LWP 1292))*
Region 112: 4K, 4364e000-4364f000 ---p 4364e000 00:00 0
Region 113: 1M, 4364f000-4374f000 rw-p 4364f000 00:00 0 *Thread 41 (Thread 0x4374e940 (LWP 1293))*
Region 114: 4K, 4374f000-43750000 ---p 4374f000 00:00 0
Region 115: 1M, 43750000-43850000 rw-p 43750000 00:00 0 *Thread 40 (Thread 0x4384f940 (LWP 1294))*
Region 116: 4K, 43850000-43851000 ---p 43850000 00:00 0
Region 117: 1M, 43851000-43951000 rw-p 43851000 00:00 0 *Thread 39 (Thread 0x43950940 (LWP 1295))*
Region 118: 4K, 43951000-43952000 ---p 43951000 00:00 0
Region 119: 1M, 43952000-43a52000 rw-p 43952000 00:00 0 *Thread 38 (Thread 0x43a51940 (LWP 1296))*
Region 120: 4K, 43a52000-43a53000 ---p 43a52000 00:00 0
Region 121: 1M, 43a53000-43b53000 rw-p 43a53000 00:00 0 *Thread 37 (Thread 0x43b52940 (LWP 1297))*
Region 122: 4K, 43b53000-43b54000 ---p 43b53000 00:00 0
Region 123: 1M, 43b54000-43c54000 rw-p 43b54000 00:00 0 *Thread 36 (Thread 0x43c53940 (LWP 1298))*
Region 124: 4K, 43c54000-43c55000 ---p 43c54000 00:00 0
Region 125: 1M, 43c55000-43d55000 rw-p 43c55000 00:00 0 *Thread 35 (Thread 0x43d54940 (LWP 1299))*
Region 126: 4K, 43d55000-43d56000 ---p 43d55000 00:00 0
Region 127: 1M, 43d56000-43e56000 rw-p 43d56000 00:00 0 *Thread 34 (Thread 0x43e55940 (LWP 1300))*
Region 128: 4K, 43e56000-43e57000 ---p 43e56000 00:00 0
Region 129: 1M, 43e57000-43f57000 rw-p 43e57000 00:00 0 *Thread 33 (Thread 0x43f56940 (LWP 1301))*
Region 130: 4K, 43f57000-43f58000 ---p 43f57000 00:00 0
Region 131: 1M, 43f58000-44058000 rw-p 43f58000 00:00 0 *Thread 29 (Thread 0x44057940 (LWP 7344))*
Region 132: 4K, 44058000-44059000 ---p 44058000 00:00 0
Region 133: 1M, 44059000-44159000 rw-p 44059000 00:00 0 *Thread 28 (Thread 0x44158940 (LWP 7345))*
Region 134: 4K, 44159000-4415a000 ---p 44159000 00:00 0
Region 135: 1M, 4415a000-4425a000 rw-p 4415a000 00:00 0 *Thread 27 (Thread 0x44259940 (LWP 7346))*
Region 136: 4K, 4425a000-4425b000 ---p 4425a000 00:00 0
Region 137: 1M, 4425b000-4435b000 rw-p 4425b000 00:00 0 *Thread 26 (Thread 0x4435a940 (LWP 7347))*
Region 138: 4K, 4435b000-4435c000 ---p 4435b000 00:00 0
Region 139: 1M, 4435c000-4445c000 rw-p 4435c000 00:00 0 *Thread 25 (Thread 0x4445b940 (LWP 7348))*
Region 140: 4K, 4445c000-4445d000 ---p 4445c000 00:00 0
Region 141: 512K, 4445d000-444dd000 rw-p 4445d000 00:00 0 *Thread 22 (Thread 0x444dc940 (LWP 26766))*
Region 142: 4K, 444dd000-444de000 ---p 444dd000 00:00 0
Region 143: 512K, 444de000-4455e000 rw-p 444de000 00:00 0 *Thread 21 (Thread 0x4455d940 (LWP 26767))*
Region 144: 4K, 4455e000-4455f000 ---p 4455e000 00:00 0
Region 145: 1M, 4455f000-4465f000 rw-p 4455f000 00:00 0 *Thread 20 (Thread 0x4465e940 (LWP 26768))*
Region 146: 4K, 4465f000-44660000 ---p 4465f000 00:00 0
Region 147: 1M, 44660000-44760000 rw-p 44660000 00:00 0 *Thread 19 (Thread 0x4475f940 (LWP 26769))*
Region 148: 4K, 44760000-44761000 ---p 44760000 00:00 0
Region 149: 1M, 44761000-44861000 rw-p 44761000 00:00 0 *Thread 18 (Thread 0x44860940 (LWP 26770))*
Region 150: 4K, 44861000-44862000 ---p 44861000 00:00 0
Region 151: 512K, 44862000-448e2000 rw-p 44862000 00:00 0 *Thread 17 (Thread 0x448e1940 (LWP 26771))*
Region 152: 4K, 448e2000-448e3000 ---p 448e2000 00:00 0
Region 153: 1M, 448e3000-449e3000 rw-p 448e3000 00:00 0 *Thread 16 (Thread 0x449e2940 (LWP 26772))*
Region 154: 4K, 449e3000-449e4000 ---p 449e3000 00:00 0
Region 155: 1M, 449e4000-44ae4000 rw-p 449e4000 00:00 0 *Thread 15 (Thread 0x44ae3940 (LWP 26773))*
Region 156: 4K, 44ae4000-44ae5000 ---p 44ae4000 00:00 0
Region 157: 1M, 44ae5000-44be5000 rw-p 44ae5000 00:00 0 *Thread 14 (Thread 0x44be4940 (LWP 26774))*
Region 158: 4K, 44be5000-44be6000 ---p 44be5000 00:00 0
Region 159: 1M, 44be6000-44ce6000 rw-p 44be6000 00:00 0 *Thread 13 (Thread 0x44ce5940 (LWP 26775))*
Region 160: 4K, 44ce6000-44ce7000 ---p 44ce6000 00:00 0
Region 161: 1M, 44ce7000-44de7000 rw-p 44ce7000 00:00 0 *Thread 12 (Thread 0x44de6940 (LWP 26776))*
Region 162: 4K, 44de7000-44de8000 ---p 44de7000 00:00 0
Region 163: 1M, 44de8000-44ee8000 rw-p 44de8000 00:00 0 *Thread 11 (Thread 0x44ee7940 (LWP 26777))*
Region 164: 4K, 44ee8000-44ee9000 ---p 44ee8000 00:00 0
Region 165: 1M, 44ee9000-44fe9000 rw-p 44ee9000 00:00 0 *Thread 10 (Thread 0x44fe8940 (LWP 26778))*
Region 166: 4K, 44fe9000-44fea000 ---p 44fe9000 00:00 0
Region 167: 1M, 44fea000-450ea000 rw-p 44fea000 00:00 0 *Thread 9 (Thread 0x450e9940 (LWP 26779))*
Region 168: 4K, 450ea000-450eb000 ---p 450ea000 00:00 0
Region 169: 1M, 450eb000-451eb000 rw-p 450eb000 00:00 0 *Thread 8 (Thread 0x451ea940 (LWP 26780))*
Region 170: 4K, 451eb000-451ec000 ---p 451eb000 00:00 0
Region 171: 1M, 451ec000-452ec000 rw-p 451ec000 00:00 0 *Thread 7 (Thread 0x452eb940 (LWP 26781))*
Region 172: 4K, 452ec000-452ed000 ---p 452ec000 00:00 0
Region 173: 1M, 452ed000-453ed000 rw-p 452ed000 00:00 0 *Thread 6 (Thread 0x453ec940 (LWP 26782))*
Region 174: 4K, 453ed000-453ee000 ---p 453ed000 00:00 0
Region 175: 1M, 453ee000-454ee000 rw-p 453ee000 00:00 0 *Thread 5 (Thread 0x454ed940 (LWP 26783))*
Region 176: 4K, 454ee000-454ef000 ---p 454ee000 00:00 0
Region 177: 1M, 454ef000-455ef000 rw-p 454ef000 00:00 0 *Thread 4 (Thread 0x455ee940 (LWP 26784))*
Region 178: 4K, 455ef000-455f0000 ---p 455ef000 00:00 0
Region 179: 1M, 455f0000-456f0000 rw-p 455f0000 00:00 0 *Thread 3 (Thread 0x456ef940 (LWP 26785))*
Region 180: 112K, 3138200000-313821c000 r-xp 00000000 08:03 28509165 /lib64/ld-2.5.so
Region 181: 4K, 313841b000-313841c000 r--p 0001b000 08:03 28509165 /lib64/ld-2.5.so
Region 182: 4K, 313841c000-313841d000 rw-p 0001c000 08:03 28509165 /lib64/ld-2.5.so
Region 183: 1M, 3138600000-313874d000 r-xp 00000000 08:03 28509166 /lib64/libc-2.5.so
Region 184: 2M, 313874d000-313894d000 ---p 0014d000 08:03 28509166 /lib64/libc-2.5.so
Region 185: 16K, 313894d000-3138951000 r--p 0014d000 08:03 28509166 /lib64/libc-2.5.so
Region 186: 4K, 3138951000-3138952000 rw-p 00151000 08:03 28509166 /lib64/libc-2.5.so
Region 187: 20K, 3138952000-3138957000 rw-p 3138952000 00:00 0
Region 188: 8K, 3138a00000-3138a02000 r-xp 00000000 08:03 28509167 /lib64/libdl-2.5.so
Region 189: 2M, 3138a02000-3138c02000 ---p 00002000 08:03 28509167 /lib64/libdl-2.5.so
Region 190: 4K, 3138c02000-3138c03000 r--p 00002000 08:03 28509167 /lib64/libdl-2.5.so
Region 191: 4K, 3138c03000-3138c04000 rw-p 00003000 08:03 28509167 /lib64/libdl-2.5.so
Region 192: 88K, 3138e00000-3138e16000 r-xp 00000000 08:03 28509171 /lib64/libpthread-2.5.so
Region 193: 1M, 3138e16000-3139015000 ---p 00016000 08:03 28509171 /lib64/libpthread-2.5.so
Region 194: 4K, 3139015000-3139016000 r--p 00015000 08:03 28509171 /lib64/libpthread-2.5.so
Region 195: 4K, 3139016000-3139017000 rw-p 00016000 08:03 28509171 /lib64/libpthread-2.5.so
Region 196: 16K, 3139017000-313901b000 rw-p 3139017000 00:00 0
Region 197: 520K, 3139200000-3139282000 r-xp 00000000 08:03 28509172 /lib64/libm-2.5.so
Region 198: 1M, 3139282000-3139481000 ---p 00082000 08:03 28509172 /lib64/libm-2.5.so
Region 199: 4K, 3139481000-3139482000 r--p 00081000 08:03 28509172 /lib64/libm-2.5.so
Region 200: 4K, 3139482000-3139483000 rw-p 00082000 08:03 28509172 /lib64/libm-2.5.so
Region 201: 80K, 3139600000-3139614000 r-xp 00000000 08:03 27531228 /usr/lib64/libz.so.1.2.3
Region 202: 1M, 3139614000-3139813000 ---p 00014000 08:03 27531228 /usr/lib64/libz.so.1.2.3
Region 203: 4K, 3139813000-3139814000 rw-p 00013000 08:03 27531228 /usr/lib64/libz.so.1.2.3
Region 204: 236K, 3139a00000-3139a3b000 r-xp 00000000 08:03 28509176 /lib64/libsepol.so.1
Region 205: 2M, 3139a3b000-3139c3b000 ---p 0003b000 08:03 28509176 /lib64/libsepol.so.1
Region 206: 4K, 3139c3b000-3139c3c000 rw-p 0003b000 08:03 28509176 /lib64/libsepol.so.1
Region 207: 40K, 3139c3c000-3139c46000 rw-p 3139c3c000 00:00 0
Region 208: 28K, 3139e00000-3139e07000 r-xp 00000000 08:03 28509173 /lib64/librt-2.5.so
Region 209: 2M, 3139e07000-313a007000 ---p 00007000 08:03 28509173 /lib64/librt-2.5.so
Region 210: 4K, 313a007000-313a008000 r--p 00007000 08:03 28509173 /lib64/librt-2.5.so
Region 211: 4K, 313a008000-313a009000 rw-p 00008000 08:03 28509173 /lib64/librt-2.5.so
Region 212: 84K, 313a200000-313a215000 r-xp 00000000 08:03 28509177 /lib64/libselinux.so.1
Region 213: 2M, 313a215000-313a415000 ---p 00015000 08:03 28509177 /lib64/libselinux.so.1
Region 214: 8K, 313a415000-313a417000 rw-p 00015000 08:03 28509177 /lib64/libselinux.so.1
Region 215: 4K, 313a417000-313a418000 rw-p 313a417000 00:00 0
Region 216: 52K, 313a600000-313a60d000 r-xp 00000000 08:03 28508215 /lib64/libgcc_s-4.1.2-20080825.so.1
Region 217: 2M, 313a60d000-313a80d000 ---p 0000d000 08:03 28508215 /lib64/libgcc_s-4.1.2-20080825.so.1
Region 218: 4K, 313a80d000-313a80e000 rw-p 0000d000 08:03 28508215 /lib64/libgcc_s-4.1.2-20080825.so.1
Region 219: 920K, 313aa00000-313aae6000 r-xp 00000000 08:03 27533465 /usr/lib64/libstdc++.so.6.0.8
Region 220: 1M, 313aae6000-313ace5000 ---p 000e6000 08:03 27533465 /usr/lib64/libstdc++.so.6.0.8
Region 221: 24K, 313ace5000-313aceb000 r--p 000e5000 08:03 27533465 /usr/lib64/libstdc++.so.6.0.8
Region 222: 12K, 313aceb000-313acee000 rw-p 000eb000 08:03 27533465 /usr/lib64/libstdc++.so.6.0.8
Region 223: 72K, 313acee000-313ad00000 rw-p 313acee000 00:00 0
Region 224: 1M, 313b200000-313b32d000 r-xp 00000000 08:03 28509179 /lib64/libcrypto.so.0.9.8e
Region 225: 1M, 313b32d000-313b52c000 ---p 0012d000 08:03 28509179 /lib64/libcrypto.so.0.9.8e
Region 226: 132K, 313b52c000-313b54d000 rw-p 0012c000 08:03 28509179 /lib64/libcrypto.so.0.9.8e
Region 227: 16K, 313b54d000-313b551000 rw-p 313b54d000 00:00 0
Region 228: 176K, 313ba00000-313ba2c000 r-xp 00000000 08:03 27542541 /usr/lib64/libgssapi_krb5.so.2.2
Region 229: 2M, 313ba2c000-313bc2c000 ---p 0002c000 08:03 27542541 /usr/lib64/libgssapi_krb5.so.2.2
Region 230: 8K, 313bc2c000-313bc2e000 rw-p 0002c000 08:03 27542541 /usr/lib64/libgssapi_krb5.so.2.2
Region 231: 276K, 313be00000-313be45000 r-xp 00000000 08:03 28508219 /lib64/libssl.so.0.9.8e
Region 232: 1M, 313be45000-313c044000 ---p 00045000 08:03 28508219 /lib64/libssl.so.0.9.8e
Region 233: 24K, 313c044000-313c04a000 rw-p 00044000 08:03 28508219 /lib64/libssl.so.0.9.8e
Region 234: 12K, 313ce00000-313ce03000 r-xp 00000000 08:03 28509182 /lib64/libcom_err.so.2.1
Region 235: 1M, 313ce03000-313d002000 ---p 00003000 08:03 28509182 /lib64/libcom_err.so.2.1
Region 236: 4K, 313d002000-313d003000 rw-p 00002000 08:03 28509182 /lib64/libcom_err.so.2.1
Region 237: 68K, 313d200000-313d211000 r-xp 00000000 08:03 28508365 /lib64/libresolv-2.5.so
Region 238: 2M, 313d211000-313d411000 ---p 00011000 08:03 28508365 /lib64/libresolv-2.5.so
Region 239: 4K, 313d411000-313d412000 r--p 00011000 08:03 28508365 /lib64/libresolv-2.5.so
Region 240: 4K, 313d412000-313d413000 rw-p 00012000 08:03 28508365 /lib64/libresolv-2.5.so
Region 241: 8K, 313d413000-313d415000 rw-p 313d413000 00:00 0
Region 242: 144K, 313e200000-313e224000 r-xp 00000000 08:03 27542539 /usr/lib64/libk5crypto.so.3.1
Region 243: 1M, 313e224000-313e423000 ---p 00024000 08:03 27542539 /usr/lib64/libk5crypto.so.3.1
Region 244: 8K, 313e423000-313e425000 rw-p 00023000 08:03 27542539 /usr/lib64/libk5crypto.so.3.1
Region 245: 580K, 313e600000-313e691000 r-xp 00000000 08:03 27542540 /usr/lib64/libkrb5.so.3.3
Region 246: 2M, 313e691000-313e891000 ---p 00091000 08:03 27542540 /usr/lib64/libkrb5.so.3.3
Region 247: 16K, 313e891000-313e895000 rw-p 00091000 08:03 27542540 /usr/lib64/libkrb5.so.3.3
Region 248: 32K, 313ea00000-313ea08000 r-xp 00000000 08:03 27542538 /usr/lib64/libkrb5support.so.0.1
Region 249: 1M, 313ea08000-313ec07000 ---p 00008000 08:03 27542538 /usr/lib64/libkrb5support.so.0.1
Region 250: 4K, 313ec07000-313ec08000 rw-p 00007000 08:03 27542538 /usr/lib64/libkrb5support.so.0.1
Region 251: 8K, 313ee00000-313ee02000 r-xp 00000000 08:03 28509181 /lib64/libkeyutils-1.2.so
Region 252: 1M, 313ee02000-313f001000 ---p 00002000 08:03 28509181 /lib64/libkeyutils-1.2.so
Region 253: 4K, 313f001000-313f002000 rw-p 00001000 08:03 28509181 /lib64/libkeyutils-1.2.so
Region 254: 4K, 2aaaaaaac000-2aaaaaaad000 rw-p 2aaaaaaac000 00:00 0
Region 255: 64M, 2aaaac000000-2aaab0000000 rw-p 2aaaac000000 00:00 0
Region 256: 40K, 2aaab0012000-2aaab001c000 r-xp 00000000 08:03 28508187 /lib64/libnss_files-2.5.so
Region 257: 1M, 2aaab001c000-2aaab021b000 ---p 0000a000 08:03 28508187 /lib64/libnss_files-2.5.so
Region 258: 4K, 2aaab021b000-2aaab021c000 r--p 00009000 08:03 28508187 /lib64/libnss_files-2.5.so
Region 259: 4K, 2aaab021c000-2aaab021d000 rw-p 0000a000 08:03 28508187 /lib64/libnss_files-2.5.so
Region 260: 64M, 2aaab4000000-2aaab8000000 rw-p 2aaab4000000 00:00 0
Region 261: 64M, 2aaab8000000-2aaabc000000 rw-p 2aaab8000000 00:00 0
Region 262: 63M, 2aaabc000000-2aaabfffa000 rw-p 2aaabc000000 00:00 0
Region 263: 24K, 2aaabfffa000-2aaac0000000 ---p 2aaabfffa000 00:00 0
Region 264: 63M, 2aaac0000000-2aaac3ff9000 rw-p 2aaac0000000 00:00 0
Region 265: 28K, 2aaac3ff9000-2aaac4000000 ---p 2aaac3ff9000 00:00 0
Region 266: 64M, 2aaac4000000-2aaac8000000 rw-p 2aaac4000000 00:00 0
Region 267: 63M, 2aaac8000000-2aaacbfed000 rw-p 2aaac8000000 00:00 0
Region 268: 76K, 2aaacbfed000-2aaacc000000 ---p 2aaacbfed000 00:00 0
Region 269: 63M, 2aaacc000000-2aaacfffe000 rw-p 2aaacc000000 00:00 0
Region 270: 8K, 2aaacfffe000-2aaad0000000 ---p 2aaacfffe000 00:00 0
Region 271: 63M, 2aaad0000000-2aaad3fe5000 rw-p 2aaad0000000 00:00 0
Region 272: 108K, 2aaad3fe5000-2aaad4000000 ---p 2aaad3fe5000 00:00 0
Region 273: 64M, 2aaad4000000-2aaad8000000 rw-p 2aaad4000000 00:00 0
Region 274: 64M, 2aaad8000000-2aaadc000000 rw-p 2aaad8000000 00:00 0
Region 275: 64M, 2aaadc000000-2aaae0000000 rw-p 2aaadc000000 00:00 0
Region 276: 64M, 2aaae0000000-2aaae4000000 rw-p 2aaae0000000 00:00 0
Region 277: 64M, 2aaae8000000-2aaaec000000 rw-p 2aaae8000000 00:00 0
Region 278: 64M, 2aaaec000000-2aaaf0000000 rw-p 2aaaec000000 00:00 0
Region 279: 63M, 2aaaf0000000-2aaaf3ff6000 rw-p 2aaaf0000000 00:00 0
Region 280: 40K, 2aaaf3ff6000-2aaaf4000000 ---p 2aaaf3ff6000 00:00 0
Region 281: 63M, 2aaaf8000000-2aaafbfff000 rw-p 2aaaf8000000 00:00 0
Region 282: 4K, 2aaafbfff000-2aaafc000000 ---p 2aaafbfff000 00:00 0
Region 283: 63M, 2aaafc000000-2aaaffffb000 rw-p 2aaafc000000 00:00 0
Region 284: 20K, 2aaaffffb000-2aab00000000 ---p 2aaaffffb000 00:00 0
Region 285: 63M, 2aab00000000-2aab03fff000 rw-p 2aab00000000 00:00 0
Region 286: 4K, 2aab03fff000-2aab04000000 ---p 2aab03fff000 00:00 0
Region 287: 63M, 2aab04000000-2aab07f73000 rw-p 2aab04000000 00:00 0
Region 288: 564K, 2aab07f73000-2aab08000000 ---p 2aab07f73000 00:00 0
Region 289: 63M, 2aab08000000-2aab0bfac000 rw-p 2aab08000000 00:00 0
Region 290: 336K, 2aab0bfac000-2aab0c000000 ---p 2aab0bfac000 00:00 0
(Omit Region from 291-425 since the post length limitation)
Region 426: 508K, 2aac27f81000-2aac28000000 ---p 2aac27f81000 00:00 0
Region 427: 63M, 2aac28000000-2aac2bf81000 rw-p 2aac28000000 00:00 0
Region 428: 508K, 2aac2bf81000-2aac2c000000 ---p 2aac2bf81000 00:00 0
Region 429: 64M, 2aac2c000000-2aac30000000 rw-p 2aac2c000000 00:00 0
Region 430: 512M, 2aac34000000-2aac54000000 rw-p 2aac34000000 00:00 0
Region 431: 502M, 2aac5c30b000-2aac7b90b000 rw-p 2aac5c30b000 00:00 0
Region 432: 4K, 2b5d0b054000-2b5d0b055000 rw-p 2b5d0b054000 00:00 0
Region 433: 36K, 2b5d0b067000-2b5d0b070000 rw-p 2b5d0b067000 00:00 0 *Thread 1 (Thread 0x2b5d0b06f010 (LWP 1232))*
Region 434: 116K, 7fffe2668000-7fffe2685000 rw-p 7ffffffe2000 00:00 0 [stack]
Region 435: 116K, ffffffffff600000-ffffffffffe00000 ---p 00000000 00:00 0 [vdso]
最佳答案
很明显,您的 8G 大部分是由于第三类内存区域(“许多令人困惑的 (64M+...+63M+508K) block ”)。在将我们的多线程应用程序从 32 位 Linux(使用 200M 虚拟内存)移植到 64 位 Linux(使用 7G 虚拟内存)后,我们发现了类似的行为:在我们的例子中,我们发现了 132K rw-p 和 64M 对---p block ,(几乎)每个线程一对。
我在这里发现了一个类似的问题:http://www.experts-exchange.com/Programming/System/Linux/Q_27033610.html .这是张贴者的结论:
OK, I browsed glibc sources, and glibc does that.
It defines HEAP_MAX_SIZE as 2 * DEFAULT_MMAP_THRESHOLD_MAX where DEFAULT_MMAP_THRESHOLD_MAX is 512K on 32bit and 32M on 64.
Then it wants a heap per thread - if no spare heap allocates new one[new_heap()]. The new heap has to be HEAP_MAX_SIZE aligned so next heaps can fit into possibly holes(to save vsize - so ironic!). To align, it simply allocates doubled size then unmaps spare part.
Finally it changes the protection for wanted region only leaving majority of the new heap without any rights. If more heap is needed changes protection on next chunk[grow_heap()] and so on.
To me - it looks stupid and vsize wasteful. On the other hand why someone would limit vspace on 64bit? Good Q, isn't it?
Also, it cannot be changed - it's compile time constants.
All in all, I'll have to live with this huge vsize on multithreaded applications or link against different memory allocator.
在我们的例子中,每个线程都有一个 132K 的堆,其中 64M 可用于 grow_heap();在您的情况下,在我看来好像每个堆都已经增长到(或接近)64M,例如区域 271 是 63M 堆 (rw-p),区域 272 是尚未使用的剩余 108K (---p)。因为你不知道你的进程为什么首先使用 8G,所以我不知道如何解释。
我也不知道为什么 glibc 为每个线程创建一个堆(如果,确实,这是正确的解释)。这是让我感到困惑的地方:
关于linux - 这些内存区域来自 Linux 进程的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6568043/
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是
它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput
我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串