gpt4 book ai didi

java - 在 java 中的堆栈内存上创建对象?

转载 作者:搜寻专家 更新时间:2023-10-30 19:40:36 26 4
gpt4 key购买 nike

出于好奇,这只是一个简单的理论问题。我一直都是 Java 的粉丝。但有一件事让我想知道为什么 java 不提供在堆栈上创建对象的机制?如果我可以像在 C# 上创建结构一样在堆栈上而不是在堆上创建小的 Point(int x,int y) 对象,效率会不会更高。 Java 中的此限制背后是否有任何特殊的安全原因? :)

最佳答案

这里的策略是,Java 不是将此决定泄露到语言中,而是让 JVM/Hotspot/JIT/运行时决定它要分配内存的位置和方式。

正在进行的研究使用“逃逸分析”来找出哪些对象实际上不需要进入堆并改为堆栈分配它们。我不确定这是否已经成为主流 JVM。但如果是这样,它将由运行时(thing -XX:something)控制,而不是开发人员。

这样做的好处是,即使是旧代码也可以从这些 future 的增强中受益,而无需对其自身进行更新。

如果您想手动管理它(但仍让编译器检查它是否保持“安全”),请查看 Rust。

关于java - 在 java 中的堆栈内存上创建对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25903320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com