日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux如何在栈上分配内存,Java堆与栈内存分配及String小记

發布時間:2023/12/19 linux 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux如何在栈上分配内存,Java堆与栈内存分配及String小记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

棧內存?堆內存

基礎類型,對象引用(堆內存地址)

由new創建的對象和數組,

存取速度快

相對于棧內存較慢

數據大小聲明周期必須確定

分配的內存由Java虛擬機自動垃圾回收器管理。動態分配內存大小

共享特性

棧中如果有字符串,則直接引用

如果沒有,開辟新的空間存入值

每new一次在堆內存中生成一個新的對象。

創建之后值可以改變

String類聲明后則不可改變

一、棧內存

基礎類型int, short, long, byte, float, double, boolean, char和對象引用

棧的共享特性

String str1 = "abc";

String str2 = "abc";

System.out.println(str1==str2); //true

int a=100;

int b=100;

1、編譯器先處理String str1 = "abc";它會在棧中創建一個變量為str1的引用,然后查找棧中是否有abc這個值,如果沒找到,就將abc存放進來,然后將str1指向abc。

2、?? 接著處理String str2 = "abc";在創建完b的引用變量后,因為在棧中已經有abc這個值,便將str2直接指向abc。這樣,就出現了str1與str2同時均指向abc的情況。

二、堆內存

new、newarray、anewarray和multianewarray等指令建立

要注意: 我們在使用諸如String str = "abc";的格式定義類時,總是想當然地認為,創建了String類的對象str。擔心陷阱!對象可能并沒有被創建!而可能只是指向一個先前已經創建的 對象。只有通過new()方法才能保證每次都創建一個新的對象。 由于String類的immutable性質,當String變量需要經常變換其值時,應該考慮使用StringBuffer類,以提高程序效率。

總結

以上是生活随笔為你收集整理的Linux如何在栈上分配内存,Java堆与栈内存分配及String小记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。