﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-starlight</title><link>http://www.blogjava.net/starlight/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:00:16 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:00:16 GMT</pubDate><ttl>60</ttl><item><title>java的内存分配管理-- 引用(http://icansoft.blog.51cto.com/268543/50100    http://icansoft.blog.51cto.com/268543/50100)</title><link>http://www.blogjava.net/starlight/archive/2009/03/02/257334.html</link><dc:creator>星光</dc:creator><author>星光</author><pubDate>Mon, 02 Mar 2009 06:19:00 GMT</pubDate><guid>http://www.blogjava.net/starlight/archive/2009/03/02/257334.html</guid><wfw:comment>http://www.blogjava.net/starlight/comments/257334.html</wfw:comment><comments>http://www.blogjava.net/starlight/archive/2009/03/02/257334.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/starlight/comments/commentRss/257334.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/starlight/services/trackbacks/257334.html</trackback:ping><description><![CDATA[一、java.lang.OutOfMemoryError: PermGen space
<p><span style="color: #0000ff">PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,<br />
这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,<br />
它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对<br />
PermGen space进行清理，所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,<br />
这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小<br />
超过了jvm默认的大小(4M)那么就会产生此错误信息了。<br />
解决方法： 手动设置MaxPermSize大小</span></p>
<p><span style="color: #0000ff">修改TOMCAT_HOME/bin/catalina.sh<br />
在&#8220;echo "Using CATALINA_BASE:&nbsp;&nbsp; $CATALINA_BASE"&#8221;上面加入以下行：<br />
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m<br />
建议：将相同的第三方jar文件移置到tomcat/shared/lib目录下，这样可以达到减少jar 文档重复占用内存的目的。</span></p>
<p><span style="color: #0000ff">二、java.lang.OutOfMemoryError: Java heap space<br />
Heap size 设置<br />
JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值，<br />
其初始空间(即-Xms)是物理内存的1/64，最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可<br />
进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。<br />
提示：在JVM中如果98％的时间是用于GC且可用的Heap size 不足2％的时候将抛出此异常信息。<br />
提示：Heap Size 最大不要超过可用物理内存的80％，一般的要将-Xms和-Xmx选项设置为相同，而-Xmn为1/4的-Xmx值。 <br />
解决方法：手动设置Heap size<br />
修改TOMCAT_HOME/bin/catalina.sh<br />
在&#8220;echo "Using CATALINA_BASE:&nbsp;&nbsp; $CATALINA_BASE"&#8221;上面加入以下行：<br />
JAVA_OPTS="-server -Xms800m -Xmx800m&nbsp;&nbsp; -XX:MaxNewSize=256m"</span></p> <img src ="http://www.blogjava.net/starlight/aggbug/257334.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/starlight/" target="_blank">星光</a> 2009-03-02 14:19 <a href="http://www.blogjava.net/starlight/archive/2009/03/02/257334.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>更改tomcat 命令窗口标题　</title><link>http://www.blogjava.net/starlight/archive/2008/09/12/228533.html</link><dc:creator>星光</dc:creator><author>星光</author><pubDate>Fri, 12 Sep 2008 02:42:00 GMT</pubDate><guid>http://www.blogjava.net/starlight/archive/2008/09/12/228533.html</guid><wfw:comment>http://www.blogjava.net/starlight/comments/228533.html</wfw:comment><comments>http://www.blogjava.net/starlight/archive/2008/09/12/228533.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/starlight/comments/commentRss/228533.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/starlight/services/trackbacks/228533.html</trackback:ping><description><![CDATA[<p>对于windows，找到tomcat的bin目录下面的catalina.bat，查找以下相似：</p>
<p>set _EXECJAVA=start "Tomcat" %_RUNJAVA%</p>
<p>把其中的Tomcat改成你想要的名字即可。</p>
<p>如:</p>
<p>set _EXECJAVA=start "MyWeb" %_RUNJAVA%</p>
<p>这样在启动Tomcat的时候窗口名字即是MyWeb。这样在一个机器上启动多个Tomcat的时候可以区分出来。</p>
<img src ="http://www.blogjava.net/starlight/aggbug/228533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/starlight/" target="_blank">星光</a> 2008-09-12 10:42 <a href="http://www.blogjava.net/starlight/archive/2008/09/12/228533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于JAVA中的值传递与引用传递增</title><link>http://www.blogjava.net/starlight/archive/2008/09/05/227217.html</link><dc:creator>星光</dc:creator><author>星光</author><pubDate>Fri, 05 Sep 2008 06:48:00 GMT</pubDate><guid>http://www.blogjava.net/starlight/archive/2008/09/05/227217.html</guid><wfw:comment>http://www.blogjava.net/starlight/comments/227217.html</wfw:comment><comments>http://www.blogjava.net/starlight/archive/2008/09/05/227217.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/starlight/comments/commentRss/227217.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/starlight/services/trackbacks/227217.html</trackback:ping><description><![CDATA[最近在做项目时碰到关于java值传递和引用传递的问题，查不了少文章，做了几个例子才搞明白，当然我总结出来的不一定是对的，欢迎大家来拍砖。主要有以下两条：<br />
1.如果是基本类型，那么传递进去的就是值传递。<br />
2.如果不是基本类型，那么传递进去的就是对象引用的拷贝。<br />
<br />
以下是例子：<br />
public class Test {<br />
<br />
&nbsp;&nbsp;&nbsp; private String name;<br />
<br />
&nbsp;&nbsp;&nbsp; public String getName() {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return name;<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; public void setName(String name) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.name = name;<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
<br />
public class Test1 {&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;private static Test staticTest;<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Test t1 = new Test();<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;call(t1);<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;System.out.println(t1.getName());<br />
&nbsp;&nbsp; &nbsp;}<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;public static void call(Test rt) {<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;staticTest = new Test();<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;staticTest.setName("abc");<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;rt.setName("cba");<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;rt = staticTest;<br />
&nbsp;&nbsp; &nbsp;}<br />
}<br />
此时的运行结果是什么？机器给出的结果是&#8220;cba&#8221;，为什么会这样，我理解如下：<br />
rt.setName("cba");<br />
此时rt是t1的一个复制，但是又不代表t1,但是rt和t1都指向同一个对象，无论通过rt还是t1来都会改变所引用对象的值。<br />
rt = staticTest;<br />
这时会把staticTest的引用赋给rt，但是rt只是t1的一个引用， rt此时指向staticTest，但是不会更改t1的值。<br />
所以会发生以上的结果。不知道正确与否？<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/starlight/aggbug/227217.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/starlight/" target="_blank">星光</a> 2008-09-05 14:48 <a href="http://www.blogjava.net/starlight/archive/2008/09/05/227217.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>