java让对象分配在栈上_Java中的栈上分配

本文介绍了Java中的栈上分配技术,这是一种优化手段,用于将线程私有的、不会逃逸的对象分配在栈上,以提高性能并减少垃圾回收。内容包括逃逸分析的概念,以及如何通过代码示例理解对象是否可能逃逸。此外,还讨论了栈上分配的适用场景和限制。
摘要由CSDN通过智能技术生成

什么是栈上分配

栈上分配是java虚拟机提供的一种优化技术,基本思想是对于那些线程私有的对象(指的是不可能被其他线程访问的对象),可以将它们打散分配在栈上,而不是分配在堆上。分配在栈上的好处是可以在函数调用结束后自行销毁,而不需要垃圾回收器的介入,从而提供系统的性能。

栈上分配的一个技术基础是进行逃逸分析。逃逸分析的目的是判断对象的作用域是否有可能逃逸出函数体。

下面的代码显示了一个逃逸的对象:

public class PartionOnStack {

static class User{

private int id;

private String name;

public User(){}

}

private static User user;

public static void foo() {

user=new User();

user.id=1;

user.name="sixtrees";

}

public static void main(String[] args) {

foo();

}

}

因为上面的代码中的User的作用域是整个Main Class,所以user对象是可以逃逸出函数体的。下面的代码展示的则是一个不能逃逸的代码段。

public class PartionOnStack {

class User{

private int id;

private String name;

public User

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值