java开发中的虚拟机内存问题
最近运行程序,老是遇到内存溢出的问题,Out of Memory(系统内存不足)的异常。仔细查资料,好好学习了一下虚拟机的几只,才知道,这是因为Java虚拟机默认分配的内存只有64M,如果应用的比较大,超出了64M,Java虚拟机就会抛出OutOfMemoryError,并停止运行。所以,如果我们要运行大程序,就必须添加内存使用命令-Xms(最小使用内存) -Xmx(最大使用内存)。
一般在开发有,我们有如下几种可能用到的地方。
1.单独的.class
java -Xms64m -Xmx256m Test
2.在eclipse中,运行这种程序可以这样配置,Run->Open Run Dialog->Arguments,在VM arguments中输入 -Xms64m -Xmx256m ,点击Run就可以运行程序了。
3.直接修改eclipse虚拟机,window->Preferences->Java->Installed JREs选择运行的虚拟机,在Default VM Arguments中
加入输入-Xms64m -Xmx256m ,也可以添加其他参数如-Xms128M -XX:PermSize=64M -XX:MaxPerSize=128M
4.修改eclipse.ini
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
5.Tomcat需要修改%CATALINA%\bin\catalina.bat文件,在开头的地方加入set JAVA_OPTS=-Xms256m -Xmx512m,
如果没有 catalina.bat文件,可以在运行tomcat6w.exe的时候,修改其中的Initial memory pool和Maximum memory pool的值,分别为256,512.
这里有几个问题:
1. 各个参数的含义什么?
2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?
3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?
下面我们一一进行回答
1. 各个参数的含义什么?
参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解
相关文档:
1 编译命令
javac [options] filename.java
options->
-classpath path 编译时需要的类路径
-d directory 设定编译生成的.class文件输入到哪一个目录。
关于-d小技巧 : 如果.java文件中使用了package语句, 例如 package com.test.maths; 加上- d . 选项会帮助在当前目 ......
采用串口操作进行短信收发,是比较常见的一种方式.比如,很多群发软件,用的就是这种方法.
1.配置comm.jar.
Comm.jar是Sub实现底层串口操作的API,调用了本地的DLL文件,因为Java本身不具备直接访问硬件设置的能力,都是通过调用本地方法来实现的.可以Java的官方网站下载.下载之后把其中Comm.jar包导入到工程的Classpath中,把另 ......
关于java虚拟机使用内存的思考
JVM(java虚拟机)其实就是操作系统(如windows)上的一个普通程序(进程名叫java,这个程序可以解释执行class文件)。
当java进程启动时会首先分配一块堆内存(最小内存),以后每当class字节码程序要求JVM(java进程)分配内存时,JVM
就会在预先分配的那块内存上面为class字节 ......
java获取当前路径
1、利用System.getProperty()函数获取当前路径:
System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径
2、使用File提供的函数获取当前路径:
File directory = new File("");//设定为当前文件夹
try{
System.out.println(directory.getCano ......
这几天,在网上搜了很多关于java的东西,现在给大家总结一下,非常有用哦,很多东西我们在国内是无法了解到的
java程序员必去的国外网站
http://www.onjava.com
每周都有新文章发表
http://www.developer.com/java
由Gamelan.com 维护的Java技术文章网站
http://www.java.net
Sun公司维护的一个Java社区网站
http:/ ......