簡體   English   中英

varargs工具允許在java中使用多少個參數?

[英]How many parameters does the varargs facility permit in java?

我很想知道使用Java中的varargs工具可以傳遞多少參數。

是否存在JVM或內存限制? 據我所知,varargs是作為一個數組實現的,所以限制是由內存量決定的。 它是否正確?

Varargs是用於動態數組的語法糖,其大小足以適合編碼的元素。

那么限制將是數組的大小,即2 31 (即大)。

考慮到大小是由編碼的實際參數數量指定的,您將永遠不必擔心它。


快速測試確認通常的方法參數計數255不適用於單個varargs元素。

就在這里。 嘗試分配大於Pergemn內存的內存,拋出OutOfMemory

請注意,這里沒有關於數組或變量的特性。 您可以在分配的內存下方自由使用內存。

我希望這只是為了學習,而不是在你的應用程序中使用那些。

變量arity參數的數量沒有明確的限制。 但是方法的大小是有限的。 它不應超過65535字節碼

javac編譯對變量arity方法的調用時,它使用如下模式創建並填充數組:

+0: dup
+1: bipush <index> (or sipush if index > 127)
+3: iconst_0
+4: iastore
+5: dup
    ...

因此,填充一個數組元素需要5或6個字節碼。
這意味着您幾乎可以使用超過10K的參數調用方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM