JSOFT
PHIÊN BẢN MỚI           Hộp thư
Cảm ơn bộ nhớ - Hiểu cách JVM sử dụng bộ nhớ riêng trên Windows và Linux như thế nào
(JSOFT.VN) - Việc sử dụng hết heap (Tạm hiểu: heap là vùng lưu trữ đặc biệt trong bộ nhớ được dùng để lưu giữ các tài liệu quan trọng như tài nguyên hệ thống và các loại đối tượng khác nhau đang được sử dụng. Các heap đều được giới hạn trong phạm vi 64k. Sau đây gọi là vùng heap) của Java™ không phải là nguyên nhân duy nhất tạo ra một lỗi java.lang.OutOfMemoryError. Nếu bộ nhớ riêng (native memory) dùng hết, có thể xảy ra các lỗi OutOfMemoryError (lỗi thiếu bộ nhớ) mà các kỹ thuật gỡ lỗi thông thường của bạn sẽ không thể giải quyết được. Bài viết này giải thích bộ nhớ riêng là gì, thời gian chạy của Java sử dụng nó như thế nào, việc dùng hết nó sẽ như thế nào và làm thế nào để gỡ lỗi cho một lỗi OutOfMemoryError trên Windows® và Linux®.

 

Vùng heap của Java, nơi cấp phát không gian nhớ cho mọi đối tượng Java, là vùng bộ nhớ gắn kết mật thiết nhất với bạn khi viết các ứng dụng Java. Máy ảo Java (JVM) được thiết kế để cách ly chúng ta khỏi các điểm đặc thù của máy chủ, vì thế hoàn toàn tự nhiên, có thể coi vùng heap như là một bộ nhớ. Chắc chắn là bạn đã từng gặp phải một lỗi OutOfMemoryError của vùng heap của Java — gây ra bởi một lỗ rò đối tượng hoặc do không tạo ra vùng heap đủ lớn để lưu trữ tất cả các dữ liệu của bạn — và có lẽ bạn đã học được một vài thủ thuật để gỡ lỗi các kịch bản này. Nhưng khi các ứng dụng Java của bạn xử lý nhiều dữ liệu hơn và nạp công việc đồng thời nhiều hơn, bạn có thể bắt đầu nếm trải các lỗi OutOfMemoryError không thể sửa chữa được khi sử dụng cả túi các thủ thuật thông thường của bạn — đó là các kịch bản trong đó các lỗi xuất hiện ngay cả khi vùng heap của Java chưa đầy. Khi điều này xảy ra, bạn cần phải hiểu những gì đang xảy ra bên trong Môi trường thời gian chạy Java (Java Runtime Environment-JRE) của bạn.

 

Các ứng dụng Java chạy trong môi trường ảo hóa của thời gian chạy (runtime) Java, nhưng thời gian chạy bản thân nó là một chương trình riêng được viết bằng một ngôn ngữ (ví dụ như C), có tiêu dùng tài nguyên riêng, bao gồm cả bộ nhớ riêng. Bộ nhớ riêng là bộ nhớ có sẵn dùng cho tiến trình thời gian chạy, để phân biệt với bộ nhớ của vùng heap Java do một ứng dụng Java sử dụng. Mỗi tài nguyên ảo — bao gồm cả vùng heap Java và các luồng (threads) Java — phải được lưu trữ trong bộ nhớ riêng, cùng với các dữ liệu được các máy ảo sử dụng khi nó chạy. Điều này có nghĩa rằng những hạn chế về bộ nhớ riêng, do phần cứng của máy chủ và hệ điều hành (OS) áp đặt sẽ ảnh hưởng đến những gì bạn có thể làm với ứng dụng Java của bạn.

 

Bài viết này là một trong hai bài trình bày cùng một chủ đề trên các nền tảng hệ thống khác nhau. Trong cả hai bài, bạn sẽ tìm hiểu bộ nhớ riêng là gì, thời gian chạy Java dùng nó như thế nào, việc sử dụng hết nó sẽ ra sao và làm thế nào để gỡ lỗi một OutOfMemoryError riêng. Bài viết này trình bày Windows và Linux và không tập trung vào bất kỳ thời gian chạy cụ thể nào. Bài viết của cùng một tác giả trình bày về AIX và tập trung vào IBM® Developer Kit for Java (Bộ dụng cụ của nhà phát triển của IBM cho Java). (Các thông tin trong bài viết đó về việc thực hiện của IBM cũng đúng cho các nền tảng khác, không phải AIX, vì thế nếu bạn sử dụng IBM Developer Kit cho Java trên Linux hay IBM 32-bit Runtime Environment (Môi trường thời gian chạy 32-bit của IBM cho Windows), bạn có thể nhận thấy bài viết đó cũng có ích).

 

Phần tiếp theo có tiêu đề: Bộ nhớ riêng

Theo IBM
Từ khóa: java, bộ nhớ, jvm,

Khóa học sắp khai giảng

    Đăng nhập (Học viên)

    Làm thế nào để có thể học lập trình nhanh!

    Lựa chọn ngôn ngữ nào để bắt đầu học lập trình?

    Cổng thông tin (Portal) là gì ? Xây dựng cổng thông tin có những chức năng gì?

    Cuộc chiến giữa JAVA và DotNET, bạn chọn bên nào?

    Java hay .NET? Một bài toán nan giải của nhiều Newbie

    Le Doan Hop

    Những xu hướng lập trình đang nổi trong làng công nghệ

    WWW - 25 năm thay đổi thế giới

    Chưa dám dùng phần mềm nguồn mở vì thiếu người hỗ trợ

    5 hiểu lầm dai dẳng nhất về Android

    Nhìn lại quá trình “tiến hóa” của Windows

    © Copyright 2008-2016 JSoft.vn, All rights reserved.
    ® JSoft giữ bản quyền nội dung trên website này
    Build on J2EE technology