Download Firefox: WindowsMac OS X
logo       
Google Custom Search
    AddThis Social Bookmark Button

RE:: [ sisc-Bugs-1091312 ] java.lang.OutOfMemoryError: Java heap space: msg#00018

Subject: RE:: [ sisc-Bugs-1091312 ] java.lang.OutOfMemoryError: Java heap space
To: "SourceForge.net" <noreply@xxxxxxxxxxxxxxx>
Subject: Re: [SISC-devel] [ sisc-Bugs-1091312 ] java.lang.OutOfMemoryError: 
Java heap space
Cc: noreply@xxxxxxxxxxxxxxx

The out of memory occurs because of how SICP does laziness.
See http://srfi.schemers.org/srfi-45/srfi-45.html


At 05:43 AM 12/26/2004, SourceForge.net wrote:
>Bugs item #1091312, was opened at 2004-12-26 11:43
>Message generated for change (Tracker Item Submitted) made by Item Submitter
>You can respond by visiting: 
>https://sourceforge.net/tracker/?func=detail&atid=379534&aid=1091312&group_id=23735
>
>Category: None
>Group: None
>Status: Open
>Resolution: None
>Priority: 5
>Submitted By: gni (gni)
>Assigned to: Nobody/Anonymous (nobody)
>Summary: java.lang.OutOfMemoryError: Java heap space
>
>Initial Comment:
>I get such message while trying an example from SICP
>book about an infinite stream of primes.
>Delayed evaluation and memoization techniques are used
>in the example.
>The final stream of primes is called "primes".
>To get n-th prime from such stream I use function
>"stream-ref".
>With DrScheme running as Standard R5RS i.e. I can
>compute (stream-ref primes 1000) with easy.
>Under sisc I get error java.lang.OutOfMemoryError.
>
>The output I get is the following:
>541
>1223
>1987
>Exception in thread "main" java.lang.OutOfMemoryError:
>Java heap space
>
>This is the code that generates the error, divided in
>two java classes:
> uNLPBotScheme that is a dirty wrapper around sisc
>interpreter
> SchemeDemo where is a main that run the example about
>infinite stream of primes
>
>
>uNLPBotScheme.java
>-----------------------------------------------------
>package net.sf.unlpbot.scheme;
>import sisc.interpreter.*;
>import sisc.ser.*;
>import sisc.data.*;
>
>public class uNLPBotScheme {
>        public AppContext ctx=null;
>        public Interpreter r = null;
>        public String heap = "F:/sisc.shp";
>        public String cname = "myapp";
>        public uNLPBotScheme() {
>                this.ctx = new AppContext();
>                Context.register(this.cname, this.ctx);
>                this.r = Context.enter(this.cname);
>                try {
>                this.ctx.loadEnv(this.r, new
>SeekableDataInputStream(new
>BufferedRandomAccessInputStream(this.heap,"r")));
>                } catch (Exception e) {//TODO
>                }
>        }
>        public uNLPBotScheme(String cname) {
>                this.cname=cname;
>                this.ctx = new AppContext();
>                Context.register(this.cname, this.ctx);
>                this.r = Context.enter(this.cname);
>                try {
>                this.ctx.loadEnv(this.r, new
>SeekableDataInputStream(new
>BufferedRandomAccessInputStream(this.heap,"r")));
>                } catch (Exception e) { // TODO 
>                }
>        }
>        public String eval(String arg) {
>                String result = null;
>                try {
>                result = this.r.eval(arg).toString();
>                } catch (Exception e) {}
>                return result;
>        }
>        public Value eval(Value val) {
>                Value result = null;
>                try {
>                result = this.r.eval(val);
>                } catch (Exception e) {}
>                return result;
>        }
>}
>
>
>
>SchemeDemo.java
>-----------------------------------------------------
>package net.sf.unlpbot.sandbox.demos;
>import net.sf.unlpbot.scheme.*;
>
>public class SchemeDemo {
>
>        public static void main(String[] args) {
>                uNLPBotScheme scheme = new uNLPBotScheme();
>                scheme.eval("(define false #f)");
>                scheme.eval("(define true #t)");
>                scheme.eval("(define-syntax cons-stream (syntax-rules
>() ((cons-stream value-expr call-expr) (cons value-expr
>(delay call-expr)))))");
>                scheme.eval("(define-syntax delay (syntax-rules ()
>((delay exp) (memo-proc (lambda () exp)))))");
>                scheme.eval("(define (stream-car s) (car s))");
>                scheme.eval("(define (stream-cdr s) (force (cdr s)))");
>                scheme.eval("(define the-empty-stream '())");
>                scheme.eval("(define (stream-null? s) (null? s))");
>                scheme.eval("(define (stream-ref s n) (if (< n 2)
>(stream-car s) (stream-ref (stream-cdr s) (- n 1))))");
>                scheme.eval("(define (stream-map proc s) (if
>(stream-null? s) the-empty-stream (cons-stream (proc
>(stream-car s)) (stream-map proc (stream-cdr s)))))");
>                scheme.eval("(define (stream-for-each proc s) (if
>(stream-null? s) 'done (begin (proc (stream-car s))
>(stream-for-each proc (stream-cdr s)))))");
>                scheme.eval("(define (display-stream s)
>(stream-for-each display-line s))");
>                scheme.eval("(define (display-line x) (newline)
>(display x))");
>                scheme.eval("(define (stream-filter pred stream)
>(cond ((stream-null? stream) the-empty-stream) ((pred
>(stream-car stream)) (cons-stream (stream-car stream)
>(stream-filter pred (stream-cdr stream)))) (else
>(stream-filter pred (stream-cdr stream)))))");
>                scheme.eval("(define (stream-enumerate-interval low
>high) (if (> low high) the-empty-stream (cons-stream
>low (stream-enumerate-interval (+ low 1) high))))");
>                scheme.eval("(define (memo-proc proc) (let
>((already-run? false) (result false)) (lambda () (if
>(not already-run?) (begin (set! result (proc)) (set!
>already-run? true) result) result))))");
>                scheme.eval("(define (force delayed-object)
>(delayed-object))");
>                scheme.eval("(define (integers-starting-from n)
>(cons-stream n (integers-starting-from (+ n 1))))");
>                scheme.eval("(define (divisible? x y) (= (remainder x
>y) 0))");
>                scheme.eval("(define (sieve stream) (cons-stream
>(stream-car stream) (sieve (stream-filter (lambda (x)
>(not (divisible? x (stream-car stream)))) (stream-cdr
>stream)))))");
>                scheme.eval("(define primes (sieve
>(integers-starting-from 2)))");
>                scheme.eval("(define (fibgen a b) (cons-stream a
>(fibgen b (+ a b))))");
>                scheme.eval("(define fibs (fibgen 0 1))");
>                System.out.println(scheme.eval("(stream-ref primes
>100)"));
>                System.out.println(scheme.eval("(stream-ref primes
>200)"));
>                System.out.println(scheme.eval("(stream-ref primes
>300)"));
>                System.out.println(scheme.eval("(stream-ref primes
>1000)"));
>                }
>}



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/


<Prev in Thread] Current Thread [Next in Thread>