2012-04-21 25 views
6

tôi có một dự án tôi đã làm việc trên và tất cả đã được tiến triển tốt cho đến ngày hôm nay. Tôi có gần 6000 dòng mã trong một tài liệu lớp java. Nếu tôi cố gắng đặt thêm một mệnh đề IF vào mã, chương trình sẽ ném một ngoại lệ khi lớp được gọi. Tất cả các đoạn mã bổ sung mà tôi đã cố gắng đặt vào lớp, khiến lớp học thất bại khi được gọi. Tôi đã cố gắng để thêm mã kiểm tra mà tôi biết hoạt động tốt, và tất cả họ ném hộp thoại cảnh báo chặt chẽ lực lượng. Tin tôi đi, không có gì sai với đoạn cuối mà tôi cố gắng đặt vào lớp. Khi tôi đưa ra đoạn trích "if" cuối cùng, không có lỗi. Đã có ai thấy điều này trước đó chưa? Ngoại lệ được ném vào trình mô phỏng, khi lớp được gọi. Tôi nhận được lực lượng đóng cửa sổ cảnh báo. Đây là kích thước tệp java: 172,503 bytes Cảm ơn bạn trước!Có giới hạn về số lượng các dòng mã bạn có thể đặt trong một java Eclipse doument

+1

* "... chương trình ném một ngoại lệ khi lớp được gọi là ngày" *. Ngoại lệ là gì? Trường hợp là ngoại lệ ném? Bởi Eclipse? Trong chương trình đang chạy? Ý bạn là "được gọi" là gì? –

+2

Bạn có thể đang chạy giới hạn kích thước phương pháp 64kb (bytecode). http://stackoverflow.com/questions/107855/is-there-any-no-of-lines-code-limit-for-a-java-class và http://stackoverflow.com/questions/5689798/why- không-java-giới hạn-kích thước-of-a-method-to-65535-byte và http://stackoverflow.com/questions/6570343/maximum-size-of-a-method-in-java –

+7

Tôi nên chỉ ra rằng một lớp học với 6.000 dòng mã là dấu hiệu của một thiết kế xấu ** thực sự **. Nếu bạn refactor/modularize mã của bạn để một cái gì đó hợp lý hơn, vấn đề sẽ biến mất. –

Trả lời

3

Tôi đã gặp phải vấn đề đó một thời gian trước và phát hiện ra rằng không có vấn đề gì để có dòng 50k và nhiều mã trong một lớp miễn là giới hạn phương pháp không được vượt quá.

Tùy thuộc vào những gì trong một phương pháp duy nhất mà thực sự làm cho kích thước bytecode tôi đã trải qua những giới hạn giữa 2-3k dòng mã/phương pháp.

thêm:

bằng cách này tại một điểm nhất định trên thực tế Eclipse bị treo khi tổng mã của bạn trở nên quá lớn để biên dịch - chỉ cần tăng bộ nhớ của Eclipse tới 1 Gb hoặc lâu hơn. Cho đến nay đó là đủ cho các dự án của tôi có khoảng 100k dòng trong tổng ...

+0

Tôi cắt nhỏ phương thức và chuyển hướng các lớp khác để tìm các khối, nó hoạt động như một sự quyến rũ. Kích thước phương thức đã bị vượt quá. Cái này khiến tôi mất cả ngày. Nhưng những gì là một ngày trong cuộc đời của một nub giá trị nào LOL – lastshadowrider

+0

@ lastshadowrider Chỉ tò mò, có bao nhiêu dòng đã làm phương pháp của bạn có cho nó sụp đổ? – blessenm

+0

khoảng 5.980 dòng trước khi nó bị lỗi. Tôi nghĩ tôi sẽ tiếp tục thêm vào phương pháp này, bởi vì mọi thứ đều hoạt động tốt. Và sau đó bùng nổ. – lastshadowrider

1

Tôi đã nhận thấy điều này trước khi, Eclipse chạy tắt của Java chính nó, vì vậy nó được rất RAM chuyên sâu, nếu bạn có quá nhiều mã để nó cần nhiều hơn có thể được alloted nó sẽ sụp đổ.

+3

Bao nhiêu là quá nhiều? Toàn bộ apk chỉ là 512kb. – lastshadowrider

4

bạn có thể thay đổi tương tự sử dụng các thiết lập sau:

--launcher.XXMaxPermSize 
256m 
--launcher.defaultAction 
openFile 
-vmargs 
-Dosgi.requiredJavaVersion=1.5 
-Xms40m 
-Xmx512m 
+0

Tôi nên đặt những tuyên bố này ở đâu? – lastshadowrider

+0

mở tập tin eclipse.ini và thay đổi cài đặt – Satya

+0

Cảm ơn sự giúp đỡ Satya – lastshadowrider

1

Có giới hạn về số lượng các dòng mã bạn có thể đặt trong một java doument Eclipse.

Không chính xác.

Có giới hạn về số lượng bytecode trong một phương thức được biên dịch và các thứ khác như vậy, nhưng chúng được áp đặt bởi định dạng tệp lớp Java (tức là đặc tả JVM) chứ không phải Eclipse.

Cũng có thể Eclipse cần nhiều bộ nhớ hơn, mặc dù tôi không nghĩ rằng việc thêm một câu lệnh if sẽ kích hoạt điều này một cách đáng tin cậy. (Và nếu nó đã làm, ngoại lệ sẽ cho bạn biết rằng bạn đã hết bộ nhớ ...)

Các vấn đề liên quan