當前位置:首頁 » 編程語言 » java常量池

java常量池

發布時間: 2023-01-24 14:40:42

java中的幾種常量池

  • 字元串常量池:當類載入完成,在堆中生成字元串對象實例,然後將該字元串對象實例的引用值存到string pool中。

  • class文件常量池:用於存放編譯器生成的各種字面量(Literal)和符號引用(Symbolic References)。

  • 運行時常量池:當類載入到內存中後,jvm就會將class常量池中的內容存放到運行時常量池中。

❷ java中 關於常量池 棧內存 堆內存

java中空間分為3個,串池、堆、棧、其中串池是放字元串的,比如「1234」,堆是放對象的。棧是放變數的。

❸ Java 中的 常量共享池 什麼意思

一直有個疑問,java中字元串池,String池,共享池是怎麼回事?
好像知道什麼意思,但具體又不太清楚,所以也一直沒太關注。
從網上看了些資料,解釋了下疑問。
在java的棧中,有共享池的概念,把一些常量會放到這個共享池中,包括字元串常量和基本類型常量。
共享的操作時在編譯時 由編譯器完成的,可以節省內存,並提高效率。
例如語句string str = "hello", 首先在棧中創建字元串引用變數str, 再看看棧中有沒有「hello」,如果有就str直接指向它,沒有就創建「hello」並放在棧中,然後指向它。
對於int之類的基本類型的變數也差不多都是這樣的。
而對於 String str = new String("hello"),則是創建新的對象,並放在堆內存中。是在runtime的時候分配內存的。
這樣做效率和節省內存方面不如String str = 「hello」, 但是更靈活,如果編譯時不知道要創建什麼樣的字元串,就
只能運行時創建了。

❹ JVM中常量池存放在哪裡

java8之前: java8之後:元數據區 Metaspace 由於 PermGen 內存管理的效果遠沒有達到預期,所以JCP已經著手去除PermGen的工作。在JDK7中,字元串常量已經從永久代移除。現今 JDK8 中 PermGen 已經被徹底移除,取而代之的是metaspace數據區,使用native內存,申請和釋放由虛擬機負責管理。 那麼,JVM中常量池到底存放在哪裡? Java6和6之前,常量池是存放在方法區(永久代)中的。 Java7,將常量池是存放到了堆中。 Java8之後,取消了整個永久代區域,取而代之的是元空間。 運行時常量池和靜態常量池存放在元空間中,而字元串常量池依然存放在堆中。

❺ java常量池是什麼

常量池(constant pool)指的是在編譯期被確定,並被保存在已編譯的.class文件中的一些數據。它包括了關於類、方法、介面等中的常量,也包括字元串常量。

❻ Java運行時常量池是什麼

運行時常量池是每個類常量池的運行時代表。它包含了類的運行時常量和靜態方法。運行時常量池是方法區的一部分。

熱點內容
編程貓角度 發布:2025-07-20 18:40:19 瀏覽:507
hibernatesession的緩存 發布:2025-07-20 18:38:46 瀏覽:13
安卓模擬器下載電腦版哪個好 發布:2025-07-20 18:37:59 瀏覽:659
三星手機存儲卡用不了 發布:2025-07-20 18:37:48 瀏覽:136
java數組返回 發布:2025-07-20 18:34:20 瀏覽:259
sqlserver不存在 發布:2025-07-20 18:28:05 瀏覽:837
原神電腦配置怎麼玩不卡 發布:2025-07-20 18:07:06 瀏覽:955
反編譯獲取原代碼 發布:2025-07-20 17:49:43 瀏覽:492
plc編譯怎麼找 發布:2025-07-20 17:48:56 瀏覽:162
無效的宏名稱將編譯啞宏 發布:2025-07-20 17:48:16 瀏覽:155