﻿<?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-JOY工作室---Java-文章分类-Java</title><link>http://www.blogjava.net/wuhen86/category/44043.html</link><description>Jump Over yourself !</description><language>zh-cn</language><lastBuildDate>Wed, 30 May 2012 05:25:32 GMT</lastBuildDate><pubDate>Wed, 30 May 2012 05:25:32 GMT</pubDate><ttl>60</ttl><item><title>myeclipse工程改为Eclipse</title><link>http://www.blogjava.net/wuhen86/articles/351347.html</link><dc:creator>无很</dc:creator><author>无很</author><pubDate>Mon, 30 May 2011 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/wuhen86/articles/351347.html</guid><wfw:comment>http://www.blogjava.net/wuhen86/comments/351347.html</wfw:comment><comments>http://www.blogjava.net/wuhen86/articles/351347.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuhen86/comments/commentRss/351347.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuhen86/services/trackbacks/351347.html</trackback:ping><description><![CDATA[修改eclipse工程下的.project文件： 
在<natures></natures>中加入 
              <nature>org.eclipse.wst.common.project.facet.core.nature</nature><nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature><nature>org.eclipse.jem.workbench.JavaEMFNature</nature> 
在<buildspec></buildspec>中加入 
              <buildcommand><name>org.eclipse.wst.common.project.facet.core.builder</name><arguments></arguments></buildcommand><buildcommand><name>org.eclipse.wst.validation.validationbuilder</name><arguments></arguments></buildcommand> 
做完以上步驟後，刷新项目；點擊右鍵-&gt;项目-&gt;右键 -&gt;Properties-&gt;Project Facets-&gt;Modify Project在弹出的面板中，选择Java和Dynamic Web Module 下一步是配置Context Root 和Content Directory 以及源码路径，配置完成。<img src ="http://www.blogjava.net/wuhen86/aggbug/351347.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuhen86/" target="_blank">无很</a> 2011-05-30 16:33 <a href="http://www.blogjava.net/wuhen86/articles/351347.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse.ini 各参数设置</title><link>http://www.blogjava.net/wuhen86/articles/313963.html</link><dc:creator>无很</dc:creator><author>无很</author><pubDate>Fri, 26 Feb 2010 00:32:00 GMT</pubDate><guid>http://www.blogjava.net/wuhen86/articles/313963.html</guid><wfw:comment>http://www.blogjava.net/wuhen86/comments/313963.html</wfw:comment><comments>http://www.blogjava.net/wuhen86/articles/313963.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuhen86/comments/commentRss/313963.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuhen86/services/trackbacks/313963.html</trackback:ping><description><![CDATA[-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M <br />
这里有几个问题： <br />
1. 各个参数的含义什么？ <br />
2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动，而有些机器无法启动？ <br />
3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置？ <br />
下面我们一一进行回答 <br />
1. 各个参数的含义什么？ <br />
参数中-vmargs的意思是设置JVM参数，所以后面的其实都是JVM的参数了，我们首先了解一下JVM内存管理的机制，然后再解释每个参数代表的含义。 <br />
堆(Heap)和非堆(Non-heap)内存 <br />
按照官方的说法：&#8220;Java 虚拟机具有一个堆，堆是运行时数据区域，所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。&#8221;&#8220;在JVM中堆之外的内存称为非堆内存(Non-heap memory)&#8221;。可以看出JVM主要管理两种类型的内存：堆和非堆。简单来说堆就是Java代码可及的内存，是留给开发人员使用的；非堆就是JVM留给自己用的，所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。 <br />
堆内存分配 <br />
JVM初始分配的内存由-Xms指定，默认是物理内存的1/64；JVM最大分配的内存由-Xmx指定，默认是物理内存的1/4。默认空余堆内存小于 40%时，JVM就会增大堆直到-Xmx的最大限制；空余堆内存大于70%时，JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、 -Xmx相等以避免在每次GC 后调整堆的大小。 <br />
非堆内存分配 <br />
JVM使用-XX:PermSize设置非堆内存初始值，默认是物理内存的1/64；由XX:MaxPermSize设置最大非堆内存的大小，默认是物理内存的1/4。 <br />
JVM内存限制(最大值) <br />
首先JVM内存限制于实际的最大物理内存(废话！呵呵)，假设物理内存无限大的话，JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制，这个限制一般是2GB-3GB（一般来说Windows系统下为1.5G-2G，Linux系统下为2G-3G），而64bit以上的处理器就不会有限制了。 <br />
2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动，而有些机器无法启动？ <br />
通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种：堆内存和非堆内存，另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因： <br />
1) 参数中-Xms的值大于-Xmx，或者-XX:PermSize的值大于-XX:MaxPermSize； <br />
2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制，比如当前操作系统最大内存限制，或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是，如果你的内存是1024MB，但实际系统中用到的并不可能是1024MB，因为有一部分被硬件占用了。 <br />
3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置？ <br />
那为什么同样的参数在快捷方式或者命令行中有效而在eclipse.ini文件中是无效的呢？这是因为我们没有遵守eclipse.ini文件的设置规则： <br />
参数形如&#8220;项 值&#8221;这种形式，中间有空格的需要换行书写，如果值中有空格的需要用双引号包括起来。比如我们使用-vm C:\Java\jre1.6.0\bin\javaw.exe参数设置虚拟机，在eclipse.ini文件中要写成这样： <br />
-vm <br />
<br />
C:\Java\jre1.6.0\bin\javaw.exe <br />
按照上面所说的，最后参数在eclipse.ini中可以写成这个样子： <br />
-vmargs <br />
-Xms128M <br />
-Xmx512M <br />
-XX:PermSize=64M <br />
-XX:MaxPermSize=128M <br />
实际运行的结果可以通过Eclipse中&#8220;Help&#8221;-&#8220;About Eclipse SDK&#8221;窗口里面的&#8220;Configuration Details&#8221;按钮进行查看。 <br />
另外需要说明的是，Eclipse压缩包中自带的eclipse.ini文件内容是这样的： <br />
-showsplash <br />
org.eclipse.platform <br />
--launcher.XXMaxPermSize <br />
256m <br />
-vmargs <br />
-Xms40m <br />
-Xmx256m <br />
其中?Clauncher.XXMaxPermSize（注意最前面是两个连接线）跟-XX:MaxPermSize参数的含义基本是一样的，我觉得唯一的区别就是前者是eclipse.exe启动的时候设置的参数，而后者是eclipse所使用的JVM中的参数。其实二者设置一个就可以了，所以这里可以把?Clauncher.XXMaxPermSize和下一行使用#注释掉。 3. 其他的启动参数。如果你有一个双核的CPU，也许可以尝试这个参数: <br />
<br />
-XX:+UseParallelGC <br />
<br />
让GC可以更快的执行。（只是JDK 5里对GC新增加的参数） <br />
-Duser.name="$user 对应的名称".<br />
<img src ="http://www.blogjava.net/wuhen86/aggbug/313963.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuhen86/" target="_blank">无很</a> 2010-02-26 08:32 <a href="http://www.blogjava.net/wuhen86/articles/313963.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>