我有幾個類,其中一個類需要計算創建了多少次對象(int字段名爲lastId)。 在C++中,我們必須初始化主類中的靜態字段值,然後我們能夠在其他類中正確使用該靜態字段並計算創建了多少個對象。 java呢?我在哪裏必須初始化靜態字段值。 另外,我知道如何計算對象是否已經創建,但如果對象已被刪除,怎麼辦? java中沒有析構函數,那麼這個工作怎麼做呢?在哪裏初始化java中的靜態字段?
回答
如果你想要做的是計算呼叫類型
jps -lvm # to find the pid of your process
jmap -histo {pid} # count all objects in the system
的積極對象的數量或
jmap -histo:live {pid} # count objects referenced
這會給你一個co按類別排列的實例數量。
如果Wnt信號可視化你的應用程序在做嘗試
jvisualvm
這將給像內存統計使用,線程等以及休息的到這裏CPU被消耗,這是創建的對象。
什麼java嗎?
你只是一些初始化他們像
static int counter = 0;
我在哪裏必須初始化靜態字段值。
您將初始化任何其他字段的相同位置。
順便說一句,如果你這樣做只是這
static int counter;
這將是默認爲0,無論如何,所以我懷疑你不需要初始化它。
如果刪除了對象,怎麼辦?
這很簡單,因爲您無法刪除對象。所以答案總是0.;)
java中沒有析構函數,所以這項工作怎麼做?
Java沒有這樣的事情,所以這個問題是沒有意義的。
*我認爲有一種方法來跟蹤被刪除(垃圾收集)對象與'ReferenceQueue'或相關的東西,但這可能超出了題。 – trutheality
@trutheality你說的都對。聽起來OP需要一個內存分析器,並且已經有工具可以做到這一點。 –
可以初始化無論是在聲明或靜態初始化:
public class test
{
//this is fine:
public static int i = 1;
//or this:
public static int i;
static
{
i = 1;
}
}
如何初始化靜態字段? 1。聲明時初始化該字段。 2.在靜態塊中初始化。 3.初始化爲空並從其他位置設置。這並不是真的初始化爲一個值,只是稍後設置一個有意義的值。
請參閱戴夫Doknjas答案的例子。
如何計算對象?見Peter Lawrey的答案。
毀滅者呢? 由於對象集合是爲你處理的,當沒有引用留給對象時,析構函數並不是真的需要。你不應該試圖在Java中管理自己的集合,它對你來說確實非常出色。如果在收集對象時絕對需要完成某些操作,則應查看finalize方法,並在收集對象時運行該方法。
請參閱http://javarevisited.blogspot.com/2012/03/finalize-method-in-java-tutorial.html以瞭解關於最終確定的更多信息。
- 1. java球衣靜態字段初始化
- 2. Java靜態字段初始化
- 3. 靜態字段初始化
- 4. 哪裏更好地初始化字段?
- 5. 靜態字段無法初始化
- 6. 通用靜態字段初始化
- 7. 靜態字段/屬性初始化
- 8. 靜態字段初始化使用AST
- 9. 當靜態字段初始化發生?
- 10. 初始化Java中的靜態最終字段
- 11. 靜態初始化的Java序列化
- 12. 在哪裏初始化經過驗證的序列化字段?
- 13. C++在哪裏初始化靜態常量
- 14. Django - 在哪裏初始化靜態對象?
- 15. 在哪裏初始化TempData
- 16. 在哪裏初始化onLongClickListener
- 17. JSP在哪裏初始化?
- 18. os.environ初始化在哪裏?
- 19. 靜態類在Java初始化
- 20. 在運行時初始化抽象類中的靜態字段
- 21. Java:以什麼順序初始化靜態final字段?
- 22. 靜態初始化
- 23. 哪個靜態類首先初始化?
- 24. 訪問Haxe靜態字段的靜態初始化的非靜態數據
- 25. java繼承的靜態初始化
- 26. 在C#泛型類型中初始化靜態字段
- 27. Java中的靜態初始化程序和靜態方法
- 28. Java字段初始化
- 29. 在Java中初始化最終字段
- 30. 在JAVA中,getDriver在java.sql.DriverManager中初始化的位置在哪裏?
給它一個鏡頭,然後回來w你的問題/代碼 – Coffee