Package de.ruedigermoeller.heapofftest.structs

Source Code of de.ruedigermoeller.heapofftest.structs.LargeIntArray

package de.ruedigermoeller.heapofftest.structs;

import org.nustaq.offheap.structs.Align;
import org.nustaq.offheap.structs.FSTStruct;
import org.nustaq.offheap.structs.NoAssist;

import java.awt.*;

/**
* Created with IntelliJ IDEA.
* User: ruedi
* Date: 17.07.13
* Time: 18:43
* To change this template use File | Settings | File Templates.
*/
public class LargeIntArray extends FSTStruct {
    @Align(8)
    protected int largeArray[];

    public LargeIntArray() {
        largeArray = new int[2000000];
        for (int i = 0; i < largeArray.length; i++) {
            largeArray[i] = i;
        }
    }

    public int calcSumStraight() {
        int res = 0;
        final int max = largeArrayLen();
        for (int i = 0; i < max; i++) {
            res += largeArray(i);
        }
        return res;
    }

    transient protected FSTStruct pointer;
    @NoAssist
    public int calcSumPointered() {
        if ( pointer == null )
            pointer = new FSTStruct();
        largeArrayPointer(pointer);
        int res = 0;
        final int max = largeArrayLen();
        for (int i = 0; i < max; i++) {
            res += pointer.getInt();
            pointer.next(4);
        }
        return res;
    }

    public void largeArrayPointer(FSTStruct struct) {
        // generated
    }

    public int largeArray(int index) {
        return largeArray[index];
    }

    public int largeArrayLen() {
        return largeArray.length;
    }

    public static Object[] oldGenRef = new Object[10];

    public static void main(String arg[] ) throws InterruptedException {
        System.gc();
        byte[][] bytes = new byte[10*1024*1024][];
        Object randomStuff[] = new Object[1000];
        for (int i = 0; i < bytes.length; i++) {
            bytes[i] = new byte[1024];
        }
        System.gc();
        System.gc();
        System.gc();
        // trigger gc's
        while( bytes[0][0] == 0 ) {
            for (int i = 0; i < randomStuff.length; i++) {
                randomStuff[i] = new Rectangle();
                if ( Math.random() > 0.9999 ) {
                    Thread.sleep(1);
                }
                if ( i < oldGenRef.length ) {
                    oldGenRef[i] = randomStuff[i];
                }
            }
            if ( Math.random() > 0.99999 ) {
                System.gc();
            }
        }

        if ( bytes[0][0] == 0 ) { // prevent escape analysis in case
            System.out.println("yes "+randomStuff);
        }
    }

}
TOP

Related Classes of de.ruedigermoeller.heapofftest.structs.LargeIntArray

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.