Java虚拟机对于运行时的程序所占内存是有限制的,当我们的项目或者程序很大时,往往会照成内存溢出。

举个例子:

public class SmallTest1 {

    public static void main(String[] args) {

        byte[] array = new byte[1024*1024*500];

    }

}

当定义这样一个500MB的数组时,就会造成JVM内存溢出:

而Java虚拟机默认的程序运行能得到的内存大小是随系统的,由Java的api体系结构中,点击Java:

后找到 “-Xmxn”这一项:

所以默认大小是根据系统设置的,那么我们该怎么设置最大运行内存呢?

如果是使用eclipse,那么在要进行的项目或者程序右键,选择【Run As】--->【Run Configurations...】,选择【(x)= Arguments】,在【VM arguments】中增加设置内存大小:

得到如下并设置参数:

这里我设置了800MB的内存,足够刚才的程序运行,接下来我们再来试试程序是否真的能运行而不再内存溢出:

public class SmallTest1 {

    public static void main(String[] args) {

        byte[] array = new byte[1024*1024*500];
System.out.println("运行成功!"); } }

============================================================

可以看到程序不再使Java虚拟机内存溢出,我们通过线程睡眠方式来再次验证下:

public class SmallTest1 {

    public static void main(String[] args) throws InterruptedException {

        byte[] array = new byte[1024*1024*500];
System.out.println("运行成功!");
Thread.sleep(5000); //设置程序运行5秒,查看内存变化
} }

未运行程序之前的系统内存:

运行程序之后的系统内存:

===========================================

如果是通过dos命令,则在cmd窗口中键入 java  -Xmx(某个数值)(内存单位)  程序名称

例如:

如何设置Java虚拟机内存以适应大程序的装载的更多相关文章

  1. eclipse设置java虚拟机内存大小

    设置java虚拟机大小可以让eclipse启动运行更快...... 在eclipse中点击window--preferences--java--Installed JREs. 然后看右边的框,鼠标点击 ...

  2. 如何设置Java虚拟机JVM启动内存参数

    Tomcat默认的Java虚拟机JVM启动内存参数大约只有64MB或者128MB,非常小,远远没有利用现在服务器的强大内存,所以要设置Java虚拟机JVM启动内存参数.具体设置方法为: Tomcat修 ...

  3. Java虚拟机内存模型及垃圾回收监控调优

    Java虚拟机内存模型及垃圾回收监控调优 如果你想理解Java垃圾回收如果工作,那么理解JVM的内存模型就显的非常重要.今天我们就来看看JVM内存的各不同部分及如果监控和实现垃圾回收调优. JVM内存 ...

  4. Java虚拟机内存分配详解

    简介 了解Java虚拟机内存分布的好处 1.了解Java内存管理的细节,有助于程序员编写出性能更好的程序.比如,在新的线程创建时,JVM会为每个线程创建一个专属的栈 (stack),其栈是先进后出的数 ...

  5. 重读《深入理解Java虚拟机》一、Java虚拟机内存区域的划分

    一.Java虚拟机内存区域如何划分 1.Java虚拟机内存区域的划分 区域名称 作用(用途) 类型 特点 虚拟机规定异常情况 内存分配与回收 其他说明 1 程序计数器 指示当前正在执行的字节码指令地址 ...

  6. 【JAVA学习】java虚拟机内存配置,-Xss256m -Xms512m -Xmx800m -XX:MaxPermSize=512m

    转自:https://blog.csdn.net/a503921892/article/details/39048737 配置tomcat服务器内存大小中的Xms.Xmx.PermSize.MaxPe ...

  7. 如何设置java虚拟机参数

    这两天在看java虚拟机,从书上看到可以自己设置java虚拟机的参数,可以方便开发人员进行系统调优和故障排查 Ecplise设置java虚拟机参数: window-->preferences-- ...

  8. 打包apk java 虚拟机内存不足

    解决方案:在android->sdk->build-tools-android-version 中有个 dx.bat dx.bat --dex 命令的dx.bat脚本有这样一句代码 REM ...

  9. Java虚拟机-内存tips

    java虚拟机内存可以分为独占区和共享区. 独占区:虚拟内存栈.本地方法栈.程序计数器. 共享区:方法区.Java堆(用来存放对象实例). 程序计数器 比较小的内存空间,当前线程所执行的字节码的行号指 ...

随机推荐

  1. php抓取ajax页面返回图片。

    要抓取的页面:http://pic.hao123.com/ 当我们往下滚动的时候,图片是用ajax来动态获取的.这就需要我们仔细分析页面了. 可以看到,异步加载的ajax文件为: http://pic ...

  2. SDUTOJ 2128 树结构练习——排序二叉树的中序遍历

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUl9NaXNheWE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  3. Android中文API(129) —— AudioManager

    前言 本章内容是android.media.AudioManager,版本为Android 3.2 r1,翻译来自"文炜",欢迎访问他的博客:"http://www.cn ...

  4. 第一次PS练习

    嘿嘿,自己第一次的PS,虽然把在大神眼里是小KS,但是了,对我来说值得劲纪念.加油,我会努力的.

  5. WinForm 小程序 NotePad

    运行效果: 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System. ...

  6. Qt学习之路:自定义Model三篇,自定义委托等等

    http://devbean.blog.51cto.com/448512/d-8/p-2

  7. char s[]字串和char *s字串有什麼区别?

    C語言有兩種字串宣告方式char s[]和char *s,兩者有什麼差異呢? Introduction char s[] = "Hello World"; (只是用字符串常量初始化 ...

  8. [置顶] think in java interview-高级开发人员面试宝典(八)

    面经出了7套,收到许多读者的Email,有许多人说了,这些基础知识是不是为了后面进一步的”通向架构师的道路“做准备的? 对的,你们没有猜错,就是这样的,我一直在酝酿后面的”通向架构师的道路“如何开章. ...

  9. service入门—电话监听器

    1.继承Service类 2.在清单文件进行配置(因为Service属于四大组件之一) <service android:name=".PhoneStatusService" ...

  10. 基于visual Studio2013解决C语言竞赛题之1050矩阵反斜线求和

       题目 解决代码及点评 /************************************************************************/ /* 50 ...