Làm th? nào đ? xác đ?nh các b? nh? r? r? trong th?i gian ch?y ngôn ng? ph? bi?n

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 318263 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Bài vi?t này th?o lu?n v? nh?ng g? b? nh? r? r? là và danh sách m?t s? có th? nguyên nhân c?a r? r? b? nh?. Thêm vào đó, bài vi?t này th?o lu?n v? các r? r? b? nh? nh?n th?c và làm th? nào nó có th? đư?c misinterpreted là m?t r? r? b? nh? đúng s? th?t.

THÔNG TIN THÊM

R? r? b? nh? có th? gây ra m?t ?ng d?ng ch?y ra kh?i tài nguyên và có th? gây ra m?t ?ng d?ng s?p đ?. Nó là quan tr?ng đ? xác đ?nh r? r? b? nh?. V?n đ? r? r? b? nh? đ? c?n các nhà phát tri?n b?ng C/C++ trong nhi?u năm. Microsoft Visual Studio 2005 ho?c trong Microsoft Visual Studio.NET, m?t b? sưu t?p toàn di?n rác gói ph?n m?m và qu?n l? b? nh? có th? ngăn ch?n r? r? b? nh?, nhưng theo m?t s? nh?ng trư?ng h?p, m?t chương tr?nh có th? xu?t hi?n đ? r? r? b? nh?.

Đ?nh ngh?a c?a r? r? b? nh?

M?t r? r? b? nh? x?y ra khi b? nh? đư?c c?p phát trong m?t chương tr?nh và là không bao gi? quay tr? l?i h? đi?u hành, m?c dù chương tr?nh không s? d?ng b? nh? lâu hơn n?a. Sau đây là b?n lo?i cơ b?n c?a r? r? b? nh?:
  • Trong m?t môi trư?ng t? qu?n l? b? nh?: b? nh? là t? đ?ng đư?c phân b? và tham chi?u b?i m?t con tr?. Con tr? là b? xóa trư?c khi b? nh? gi?i phóng. Sau khi con tr? là b? xóa, b? nh? có th? không c?n truy c?p và do đó không th? đư?c gi?i phóng.
  • Trong m?t môi trư?ng năng đ?ng qu?n l? b? nh?: b? nh? là x? l? nhưng không bao gi? thu th?p đư?c, b?i v? m?t tham chi?u đ?n các đ?i tư?ng v?n c?n ho?t đ?ng. B?i v? m?t tham chi?u đ?n các đ?i tư?ng v?n đang ho?t đ?ng, thùng rác Tr?nh sưu t?p không bao gi? thu th?p các b? nh? đi?u đó. Đi?u này có th? x?y ra v?i m?t tham chi?u là thi?t l?p c?a h? th?ng ho?c chương tr?nh.
  • Trong m?t môi trư?ng năng đ?ng qu?n l? b? nh?: thùng rác Tr?nh sưu t?p có th? thu th?p và mi?n phí b? nh? nhưng không bao gi? tr? nó đ?n các ho?t đ?ng h? th?ng. Đi?u này x?y ra khi các b? thu rác không th? di chuy?n các đ?i tư?ng đư?c c?n s? d?ng m?t ph?n c?a b? nh? và mi?n phí ph?n c?n l?i.
  • Trong b?t k? môi trư?ng b? nh?: qu?n l? b? nh? nghèo có th? k?t qu? khi nhi?u l?n các đ?i tư?ng đư?c khai báo và không bao gi? đư?c phép r?i kh?i ph?m vi. K?t qu? là, b? nh? đư?c s? d?ng và không bao gi? gi?i thoát.

Th?o lu?n

V? c?a gói b? sưu t?p rác, đư?c th?c hi?n trong Microsoft.NET Framework, nó là không th? có m?t r? r? b? nh? trong qu?n l? m?. Đi?u này cho th?y hai câu h?i: làm th? nào sau đó có th? x?y ra m?t r? r? b? nh?? T?i sao nó xu?t hi?n r?ng b?n có m?t r? r? b? nh??

M?t r? r? b? nh? có th? x?y ra trong m?t.NET Framework ?ng d?ng khi b?n s? d?ng không đư?c qu?n l? m? như m?t ph?n c?a các ?ng d?ng. M? không đư?c qu?n l? này có th? r? r? b? nh?, và các.NET Framework th?i gian ch?y không th? gi?i quy?t v?n đ? đó.

Ngoài ra, m?t d? án có th? ch? xu?t hi?n đ? có m?t r? r? b? nh?. T?nh tr?ng này có th? x?y ra n?u nhi?u l?n các đ?i tư?ng (ví d? như DataTable các đ?i tư?ng) đư?c khai báo và sau đó thêm vào m?t b? sưu t?p (ch?ng h?n như m?t S? li?u). Các ngu?n tài nguyên mà các đ?i tư?ng này s? h?u không bao gi? có th? đư?c phát hành, và các ngu?n tài nguyên là trái c?n s?ng cho toàn b? ch?y chương tr?nh. Đi?u này dư?ng như là m?t r? r?, nhưng trên th?c t? nó là ch? là m?t tri?u ch?ng c?a đư?ng b? nh? này đang phân b? trong chương tr?nh.

Ví d?, b?n có m?t S? li?u. M?i khi m?t truy v?n m?i đư?c đi?u hành, b?n thêm m?t m?i DataTable y?u t? đó S? li?u t? ch?c các d? li?u đư?c tr? l?i. N?u có m?t lư?ng l?n d? li?u mà b?n không bao gi? v?t b?, d? li?u v?n c?n s?ng mi?n là các S? li?u v?n c?n dùng. N?u đi?u này x?y ra l?n đ?, có th? ch?y ra kh?i b? nh?. Đây không ph?i là m?t r? r? b? nh?, nhưng thay vào đó nó là m?t v?n đ? trong vi?c qu?n l? b? nh?. Xem ví d? m? sau:
  Dim DS As DataSet
  Dim cn As New SqlClient.SqlConnection("data source=localhost;initial catalog=Northwind;integrated security=SSPI")
  cn.Open()
 
  Dim da As New SqlClient.SqlDataAdapter("Select * from Employees", cn)
  Dim i As Integer
  DS = New DataSet()

  For i = 0 To 1000
      da.Fill(DS, "Table" + i.ToString)
  Next
				
Chú ý Ví d? này là ch? m?t đo?n m?. Ví d? này gi? đ?nh r?ng Microsoft SQL Server đư?c cài đ?t trên máy tính đ?a phương và r?ng ngư?i s? d?ng nh?ng ngư?i đang ch?y m? này đ? truy c?p vào các Northwind cơ s? d? li?u đư?c bao g?m v?i SQL Server.

M?c dù m? này là r? ràng là không hi?u qu? và không th?c t?, nó có ngh?a là đ? ch?ng minh r?ng n?u các đ?i tư?ng đư?c thêm vào m?t b? sưu t?p (ch?ng h?n như vi?c thêm các các b?ng đ? các S? li?u b? sưu t?p), các đ?i tư?ng đư?c lưu gi? ho?t đ?ng khi các b? sưu t?p v?n c?n s?ng. N?u m?t b? sưu t?p đư?c tuyên b? ? c?p đ? toàn c?u c?a chương tr?nh và các đ?i tư?ng đư?c khai báo trong su?t chương tr?nh và thêm vào đó b? sưu t?p, đi?u này ngh?a là ngay c? khi các đ?i tư?ng không c?n trong ph?m vi, các các đ?i tư?ng v?n c?n s?ng, v? h? v?n c?n đang đư?c tham chi?u.

M?i th?i gian mà đi?u này x?y ra, s? lư?ng b? nh? chương tr?nh đang s? d?ng tăng. B? nh? không gi?m cho đ?n khi k?t thúc chương tr?nh ho?c các phát hành c?a các đ?i tư?ng t? b? sưu t?p. Khi b?n xem các chương tr?nh trên m?t theo d?i hi?u su?t, đi?u này dư?ng như là m?t r? r? b? nh?, nhưng nó không ph?i là. Các chương tr?nh v?n ki?m soát b? nh?, nhưng đ? ch?n không đ? phát hành nó. Các th?c t? là các chương tr?nh v?n có quy?n ki?m soát ngăn ng?a đi?u này b? r? r? b? nh?, nhưng th?c t? r?ng chương tr?nh gi? ngày càng tăng s? lư?ng b? nh? đư?c s? d?ng có th? làm cho nó xu?t hi?n như m?t r? r? b? nh?.

Trong s? các tri?u ch?ng r? r? b? nh?

Khi s? lư?ng b? nh? m?t chương tr?nh đang s? d?ng ti?p t?c tăng trong th?i gian th?c hi?n, đây là m?t tri?u ch?ng c?a m?t r? r? b? nh?. (B?n có th? xem này tính c?a b? nh? thông qua m?t màn h?nh hi?u năng.) S? lư?ng b? nh? chương tr?nh s? d?ng cu?i cùng có th? gây ra các chương tr?nh đ? ch?y ra kh?i tài nguyên và s?p đ?.

THAM KH?O

Border|ph?i|200px Đây là danh sách các ch? đi?m tr? giúp đ? bi?t thêm v? b? nh? và qu?n l?:
  • L?p h?c GC
  • B? nh? hi?u su?t Counters
  • Qu?n l? b? nh? t? đ?ng
  • Interoperating v?i không đư?c qu?n l? m?
Đ? bi?t thêm thông tin, h?y b?m vào s? bài vi?t sau đ? xem bài vi?t trong Cơ s? Ki?n th?c Microsoft:
317297L? tr?nh g? l?i treo c?ng, r? r? b? nh?, deadlocks, và đi?u ki?n ch?ng t?c trong Visual Basic.NET
Đ? bi?t thêm chi ti?t, h?y truy c?p Microsoft sau đây Các trang Web c?a nhà phát tri?n m?ng (MSDN):
http://MSDN.Microsoft.com/en-US/Library/x98tx3cf.aspx

http://MSDN.Microsoft.com/en-US/Library/fz5w87ad.aspx

http://MSDN.Microsoft.com/en-US/Library/kxx6e7z6.aspx

http://MSDN.Microsoft.com/en-US/Library/s3aw423e.aspx

Thu?c tính

ID c?a bài: 318263 - L?n xem xét sau cùng: 27 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Studio 2005 Professional Edition
  • Microsoft Visual Studio .NET 2003 Professional Edition
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Academic Edition
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual J# .NET 2003 Standard Edition
T? khóa: 
kbvs2005swept kbvs2005applies kbinfo kbmt KB318263 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:318263

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com