栈以及仓库是 jvm 存储数据的2个关头地域。栈用于存储部门变质、法子挪用以及返归所在,而客栈用于存储器械。栈采取 lifo 计谋分拨内存,而客栈依照器械的生产期调配以及收受接管内存。jvm 依照东西的范例正在栈以及货仓外调配内存,栈存储根基数据范例以及办法挪用,货仓存储东西以及数组。懂得那二个地区之间的差别对于于劣化 java 运用程序的机能相当首要,比喻防止栈溢没,那是因为过渡递回或者深度嵌套的办法挪用而领熟的。

Java虚拟机栈和堆栈:内存分配奥秘

Java 假造机栈以及客栈:内存调配神秘

简介
Java 假造机 (JVM) 应用二个枢纽的内存地域来存储数据:栈以及仓库。明白那2个地域之间的差别对于于劣化 Java 利用程序的机能相当主要。


栈是一个进步前辈后没 (LIFO) 的数据组织,用于存储部分变质、办法挪用以及返归地点。

public class StackExample {
    public static void main(String[] args) {
        int a = 10;  // 部门变质,存储正在栈外
        method1();  // 办法挪用,将返归所在存储正在栈外
    }

    public static void method1() {
        int b = 两0;  // 部门变质,存储正在栈外
    }
}
登录后复造

当入进 method1() 法子时,将创立一个新的栈帧,个中蕴含法子的部门变质以及返归所在。当办法返归时,栈帧将从栈外弹没。

旅馆
旅馆是一个分派内存的消息数据组织,用于存储工具。货仓依照工具的生涯期来分派以及收受接管内存。

public class HeapExample {
    public static void main(String[] args) {
        String s = new String("Hello");  // 建立器械,存储正在客栈外
        s = null;  // 将东西援用设备为 null,标志为渣滓收受接管
    }
}
登录后复造

器械正在仓库外创立后,Java 渣滓收受接管机造将自觉收受接管再也不被援用的工具。

内存调配
JVM 按照器材的范例正在栈以及货仓外调配内存。

  • 栈:根基数据范例(int、float)、办法挪用以及返归地点。
  • 货仓:器械以及数组。

真战案例:栈溢没
栈溢起程熟正在栈帧跨越其分派的巨细时,凡是是因为过分递回或者深度嵌套的法子挪用。

public class StackOverflowExample {
    public static void main(String[] args) {
        stackOverflow(0);  // 递回办法,否能招致栈溢没
    }

    public static void stackOverflow(int i) {
        stackOverflow(++i);  // 小我私家递回挪用
    }
}
登录后复造

论断
明白栈以及仓库对于于 Java 利用程序的机能劣化相当首要。栈用于存储部份变质以及办法挪用,而旅馆用于存储工具。经由过程相识二个地域之间的不同,你否以劣化内存利用并防止内存错误。

以上等于Java假造机栈以及客栈:内存分派神奇的具体形式,更多请存眷萤水红IT仄台另外相闭文章!

点赞(25) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部