File: Set-up-the-JVM.html

package info (click to toggle)
octave 10.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 145,388 kB
  • sloc: cpp: 335,976; ansic: 82,241; fortran: 20,963; objc: 9,402; sh: 8,756; yacc: 4,392; lex: 4,333; perl: 1,544; java: 1,366; awk: 1,259; makefile: 659; xml: 192
file content (137 lines) | stat: -rw-r--r-- 7,117 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Set up the JVM (GNU Octave (version 10.3.0))</title>

<meta name="description" content="Set up the JVM (GNU Octave (version 10.3.0))">
<meta name="keywords" content="Set up the JVM (GNU Octave (version 10.3.0))">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta name="viewport" content="width=device-width,initial-scale=1">

<link href="index.html" rel="start" title="Top">
<link href="Concept-Index.html" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Java-Interface.html" rel="up" title="Java Interface">
<link href="Java-Interface-Functions.html" rel="next" title="Java Interface Functions">
<link href="How-to-use-Java-from-within-Octave.html" rel="prev" title="How to use Java from within Octave">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
div.example {margin-left: 3.2em}
span:hover a.copiable-link {visibility: visible}
-->
</style>
<link rel="stylesheet" type="text/css" href="octave.css">


</head>

<body lang="en">
<div class="subsection-level-extent" id="Set-up-the-JVM">
<div class="nav-panel">
<p>
Next: <a href="Java-Interface-Functions.html" accesskey="n" rel="next">Java Interface Functions</a>, Previous: <a href="How-to-use-Java-from-within-Octave.html" accesskey="p" rel="prev">How to use Java from within Octave</a>, Up: <a href="Java-Interface.html" accesskey="u" rel="up">Java Interface</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<h4 class="subsection" id="Set-up-the-JVM-1"><span>A.4.3 Set up the JVM<a class="copiable-link" href="#Set-up-the-JVM-1"> &para;</a></span></h4>
<a class="index-entry-id" id="index-memory_002c-limitations-on-JVM"></a>
<a class="index-entry-id" id="index-select-JVM-version"></a>

<p>In order to execute Java code Octave creates a Java Virtual Machine (JVM).  By
default the version of the JVM is used that was detected during configuration
on Unix-like systems or that is pointed to from the registry keys at
<samp class="file">HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JRE</samp> or
<samp class="file">HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment</samp> on
Windows.  The default path to the JVM can be overridden by setting the
environment variable <code class="env">JAVA_HOME</code><!-- /@w -->&nbsp;to the path where the JVM is
installed.  On Windows that might be, for example,
<samp class="file">C:\Program Files\Java\jre-10.0.2</samp>.  Make sure that you select a directory
that contains the JVM with a bit-ness that matches Octave&rsquo;s.
</p>
<p>The JVM is only loaded once per Octave session.  Thus, to change the used
version of the JVM, you might have to re-start Octave.  To check which version
of the JVM is currently being used, run <code class="code">version -java</code>.
</p>
<p>The JVM allocates a fixed amount of initial memory and may expand this pool up
to a fixed maximum memory limit.  The default values depend on the Java version
(see <a class="pxref" href="Java-Interface-Functions.html#XREFjavamem">javamem</a>).  The memory pool is shared by all Java objects
running in the JVM.  This strict memory limit is intended mainly to avoid
runaway applications inside web browsers or in enterprise servers which can
consume all memory and crash the system.  When the maximum memory limit is hit,
Java code will throw exceptions so that applications will fail or behave
unexpectedly.
</p>
<p>You can specify options for the creation of the JVM inside a file named
<samp class="file">java.opts</samp>.  This is a text file where enter you enter lines containing
<samp class="option">-X</samp> and <samp class="option">-D</samp> options that are then passed to the JVM during
initialization.
</p>
<p>The directory where the Java options file is located is specified by the
environment variable <code class="env">OCTAVE_JAVA_DIR</code><!-- /@w -->.  If unset the directory where
<samp class="file">javaclasspath.m</samp> resides is used instead (typically
<samp class="file"><code class="env">OCTAVE_HOME</code><!-- /@w -->/share/octave/<code class="env">OCTAVE_VERSION</code><!-- /@w -->/m/java/</samp>).
You can find this directory by executing
</p>
<div class="example">
<pre class="example-preformatted">which javaclasspath
</pre></div>

<p>The <samp class="option">-X</samp> options allow you to increase the maximum amount of memory
available to the JVM.  The following example allows up to 256 Megabytes to be
used by adding the following line to the <samp class="file">java.opts</samp> file:
</p>
<div class="example">
<pre class="example-preformatted">-Xmx256m
</pre></div>

<p>The maximum possible amount of memory depends on your system.  On a Windows
system with 2 Gigabytes main memory you should be able to set this maximum to
about 1 Gigabyte.
</p>
<p>If your application requires a large amount of memory from the beginning, you
can also specify the initial amount of memory allocated to the JVM.  Adding
the following line to the <samp class="file">java.opts</samp> file starts the JVM with 64
Megabytes of initial memory:
</p>
<div class="example">
<pre class="example-preformatted">-Xms64m
</pre></div>

<p>For more details on the available <samp class="option">-X</samp> options of your Java Virtual
Machine issue the command &lsquo;<samp class="samp">java -X</samp>&rsquo; at the operating system command prompt
and consult the Java documentation.
</p>
<p>The <samp class="option">-D</samp> options can be used to define system properties which can then
be used by Java classes inside Octave.  System properties can be retrieved by
using the <code class="code">getProperty()</code> methods of the <code class="code">java.lang.System</code> class.
The following example line defines the property <var class="var">MyProperty</var> and assigns it
the string <code class="code">12.34</code>.
</p>
<div class="example">
<pre class="example-preformatted">-DMyProperty=12.34
</pre></div>

<p>The value of this property can then be retrieved as a string by a Java object
or in Octave:
</p>
<div class="example">
<div class="group"><pre class="example-preformatted">octave&gt; javaMethod (&quot;getProperty&quot;, &quot;java.lang.System&quot;, &quot;MyProperty&quot;);
ans = 12.34
</pre></div></div>


</div>
<hr>
<div class="nav-panel">
<p>
Next: <a href="Java-Interface-Functions.html">Java Interface Functions</a>, Previous: <a href="How-to-use-Java-from-within-Octave.html">How to use Java from within Octave</a>, Up: <a href="Java-Interface.html">Java Interface</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>