Java数据配置在内存中 java配置jvm内存

发布时间:2023-05-18 09:24:15

安装Java开发软件时,默认安装包括两个文件夹,一个JDK(Java开发工具箱),一个JRE(Java操作环境,包括JVM),另一个JDK包含 JRE。如果只运行Java程序,JRE就足够了;JDK只被开发人员使用。在这里,我们将介绍一些设置JVM内存分配的技巧。

1.设置JVM内存设置

1. 设置JVM内存的参数有四个:

-Xmx Java Heap的最大值,默认值为物理内存的1/4,最佳值应视物理内存的大小和计算机内其他内存的费用而定;

-Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设置为同一值,开发测试机JVM可保留默认值;

-Xmn Java Heap Young区大小,不熟悉最好保留默认值;

-Xss 不熟悉每个线程的Stack大小,最好保留默认值;

2. 如何设置JVM内存分配:

(1)在命令提示符下启动并使用JVM时(仅对当前运行的类Test生效):

java -Xmx128m -Xms64m -Xmn32m -Xss16m Test

(2)在集成开发环境下(如eclipse)启动和使用JVM时:

a. 在eclipse根目录下打开eclipse.ini,默认内容为(这里设置的是运行当前开发工具的JVM内存分配):

-vmargs -Xms40m -Xmx256m

-vmargs表示以下是虚拟机设置的参数,可以修改参数值,也可以添加-Xmn,-Xss,另外,eclipse.非堆内存也可以设置在ini内,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。

在开发工具的状态栏中可以显示此处设置的参数值:

在eclipse根目录下创建文件options,文件内容如下:org.eclipse.ui/perf/showHeapStatus=true

修改eclipse根目录下的eclipse.在ini文件的开头添加以下内容:

-debug options -vm javaw.exe

重新启动eclipse,您可以看到下面的状态条中有更多的JVM信息。

b. 打开eclipse-窗口-首选项-Java-已安装的JRE(对在当前开发环境中运行的Java程序有效)

在缺乏VM参数中输入编辑目前使用的JRE:-Xmx128m -Xms64m -Xmn32m -Xss16m

c. 打开eclipse-运行-运行-Java应用程序(只对设置的Java类生效)

选择需要设置内存分配的类别-在VM自变量中输入自变量:-Xmx128m -Xms64m -Xmn32m -Xss16m

注:b和c设置在同一开发环境中同时进行,b设置生效,c设置无效,如:

开发环境设置为:-Xmx256m,类Test设置为:-Xmx128m -在运行Test时,Xms64m的生效设置为:

-Xmx256m -Xms64m

(3)在服务器环境下(如Tomcat)启动和使用JVM(Java程序在当前服务器环境下生效):

a. 设置环境变量:

变量名:CATALINA_OPTS

变量值:-Xmx128mm -Xms64m -Xmn32m -Xss16m

b. 打开tomcat根目录下的bin文件夹,编辑catalina.bat,将其中的%CATALINA_OPTS%(共有四处)替换为-Xmx128m -Xms64m -Xmn32m -Xss16m

二、查看JVM内存信息设置

Runtime.getRuntime().maxMemory(); ///最大可用内存对应-Xmx

Runtime.getRuntime().freeMemory(); ////目前JVM空闲内存

Runtime.getRuntime().totalMemory(); ///当前JVM占用的内存总数相当于当前JVM使用的内存和frememory()的总和

关于maxmemory(),freeMemory()和totalmemory():

maxMemory()是JVM最大的可用内存,默认值为物理内存的1/4,设值不得高于计算机物理内存;

totalMemory()是当前JVM占用的内存总数,其值相当于当前JVM使用的内存和frememory()的总和,会随着JVM使用内存的增加而增加;

freeMemory()是目前JVM的空闲内存,因为JVM只在需要内存时占用物理内存,所以freememory()的值一般都很高 但是JVM的实际可用内存不等于freememory(),而应等于freememory() maxMemory()-totalMemory()+freeMemory()。并设置JVM内存分配。

本文是转载内容,我们尊重原作者对文章的权利。如有内容错误或侵权行为,请联系我们更正或删除文章。

上一篇 Java实现时间倒计时 java倒计时
下一篇 Java logstash 日志收集 logstash收集tomcat日志

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题