相关疑难解决方法(0)

什么时候Hotspot可以在堆栈上分配对象?

从Java 6的某个地方开始,Hotspot JVM可以进行转义分析并在堆栈上而不是在垃圾收集堆上分配非转义对象.这导致生成的代码加速并减少垃圾收集器的压力.

Hotspot何时能够堆叠分配对象的规则是什么?换句话说,我什么时候可以依靠它来进行堆栈分配?

编辑:这个问题是重复的,但是(IMO)下面的答案比原始问题提供的答案更好.

java jvm jvm-hotspot compiler-optimization stack-allocation

13
推荐指数
1
解决办法
1837
查看次数

使用Java 7进行转义分析/堆栈分配的资格

我正在使用Java 7中的转义分析进行一些测试,以便更好地了解哪些对象有资格进行堆栈分配.

这是我编写的用于测试堆栈分配的代码:

import java.util.ArrayList;
import java.util.Iterator;


public class EscapeAnalysis {

    private static final long TIME_TO_TEST = 10L * 1000L; // 10s

    static class Timestamp {
        private long millis;
        public Timestamp(long millis) {
            this.millis = millis;
        }
        public long getTime() {
            return millis;
        }
        public void setTime(long time) {
            millis = time;
        }
    }

    public static void main(String[] args) {
        long r = 0;
        System.out.println("test1");
        r += test1();
        System.out.println("test2");
        r += test2();
        System.out.println("test3");
        r += test3();
        System.out.println("test4");
        r …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection jvm escape-analysis java-7

11
推荐指数
1
解决办法
3815
查看次数