各类Java heap space 解决方法,并通过java代码获取JVM的相关信息,所在操作系统的信息(包含eclipse&myeclipse的调试的内存设置)
来源:互联网 发布:什么是java函数式编程 编辑:程序博客网 时间:2024/06/05 13:27
各类Java heap space 解决方法,并通过java代码获取JVM的相关信息,所在操作系统的信息(包含eclipse&myeclipse的调试的内存设置)
在网上一查可能是JAVA的堆栈设置太小的原因。
跟据网上的答案大致有这两种解决方法:
1、设置环境变量
set JAVA_OPTS= -Xms32m -Xmx512m
可以根据自己机器的内存进行更改,但本人测试这种方法并没有解决问题。可能是还有哪里需要设置。
2、java -Xms32m -Xmx800m className
就是在执行JAVA类文件时加上这个参数,其中className是需要执行的确类名。(包括包名)
这个解决问题了。而且执行的速度比没有设置的时候快很多。
如果在测试的时候可能会用Eclispe 这时候就需要在Eclipse ->run -arguments 中的VM arguments 中输入-Xms32m -Xmx800m这个参数就可以了。
myEclispe 则在对应的java project 右击run as->run->(X)=Arguments下的VM arguments下添加:-Xms32m -Xmx800m即可.
你也可以用如下代码测试你的jvm的内存是否设置成功:
package longne;
import java.lang.management.CompilationMXBean;
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryPoolMXBean;
import java.lang.management.RuntimeMXBean;
import java.lang.management.ThreadMXBean;
import java.util.List;
import sun.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;
/**
* java获取所在操作系统的信息,JVM的相关信息
* @author kongqz
* */
public class MyJvm {
// =======================通过java来获取相关系统状态============================
// 总的内存量 i is 32576
// 空闲内存量 j is 32357
// 最大内存量 is 812928
/**
* @param 直接通过jdk来获取系统相关状态,在1.5.0_10-b03版本以上测试通过
*/
public static void main(String[] args) {
System.out.println("=======================通过java来获取相关系统状态============================ ");
int i = (int)Runtime.getRuntime().totalMemory()/1024;//Java 虚拟机中的内存总量,以字节为单位
System.out.println("总的内存量 i is "+i);
int j = (int)Runtime.getRuntime().freeMemory()/1024;//Java 虚拟机中的空闲内存量
System.out.println("空闲内存量 j is "+j);
System.out.println("最大内存量 is "+Runtime.getRuntime().maxMemory()/1024);
System.out.println("=======================OperatingSystemMXBean============================ ");
OperatingSystemMXBean osm = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
System.out.println(osm.getFreeSwapSpaceSize()/1024);
System.out.println(osm.getFreePhysicalMemorySize()/1024);
System.out.println(osm.getTotalPhysicalMemorySize()/1024);
//获取操作系统相关信息
System.out.println("osm.getArch() "+osm.getArch());
System.out.println("osm.getAvailableProcessors() "+osm.getAvailableProcessors());
System.out.println("osm.getCommittedVirtualMemorySize() "+osm.getCommittedVirtualMemorySize());
System.out.println("osm.getName() "+osm.getName());
System.out.println("osm.getProcessCpuTime() "+osm.getProcessCpuTime());
System.out.println("osm.getVersion() "+osm.getVersion());
//获取整个虚拟机内存使用情况
System.out.println("=======================MemoryMXBean============================ ");
MemoryMXBean mm=(MemoryMXBean)ManagementFactory.getMemoryMXBean();
System.out.println("getHeapMemoryUsage "+mm.getHeapMemoryUsage());
System.out.println("getNonHeapMemoryUsage "+mm.getNonHeapMemoryUsage());
//获取各个线程的各种状态,CPU 占用情况,以及整个系统中的线程状况
System.out.println("=======================ThreadMXBean============================ ");
ThreadMXBean tm=(ThreadMXBean)ManagementFactory.getThreadMXBean();
System.out.println("getThreadCount "+tm.getThreadCount());
System.out.println("getPeakThreadCount "+tm.getPeakThreadCount());
System.out.println("getCurrentThreadCpuTime "+tm.getCurrentThreadCpuTime());
System.out.println("getDaemonThreadCount "+tm.getDaemonThreadCount());
System.out.println("getCurrentThreadUserTime "+tm.getCurrentThreadUserTime());
//当前编译器情况
System.out.println("=======================CompilationMXBean============================ ");
CompilationMXBean gm=(CompilationMXBean)ManagementFactory.getCompilationMXBean();
System.out.println("getName "+gm.getName());
System.out.println("getTotalCompilationTime "+gm.getTotalCompilationTime());
//获取多个内存池的使用情况
System.out.println("=======================MemoryPoolMXBean============================ ");
List<MemoryPoolMXBean> mpmList=ManagementFactory.getMemoryPoolMXBeans();
for(MemoryPoolMXBean mpm:mpmList){
System.out.println("getUsage "+mpm.getUsage());
System.out.println("getMemoryManagerNames "+mpm.getMemoryManagerNames().toString());
}
//获取GC的次数以及花费时间之类的信息
System.out.println("=======================MemoryPoolMXBean============================ ");
List<GarbageCollectorMXBean> gcmList=ManagementFactory.getGarbageCollectorMXBeans();
for(GarbageCollectorMXBean gcm:gcmList){
System.out.println("getName "+gcm.getName());
System.out.println("getMemoryPoolNames "+gcm.getMemoryPoolNames());
}
//获取运行时信息
System.out.println("=======================RuntimeMXBean============================ ");
RuntimeMXBean rmb=(RuntimeMXBean)ManagementFactory.getRuntimeMXBean();
System.out.println("getClassPath "+rmb.getClassPath());
System.out.println("getLibraryPath "+rmb.getLibraryPath());
System.out.println("getVmVersion "+rmb.getVmVersion());
}
}
- 各类Java heap space 解决方法,并通过java代码获取JVM的相关信息,所在操作系统的信息(包含eclipse&myeclipse的调试的内存设置)
- Java 代码中如何获取JVM相关的信息?
- java heap space 问题(java的jvm内存超出)
- Java heap space的设置与在myeclipse启动时分配JVM heap大小的方法
- Java heap space的设置与在myeclipse启动时分配JVM heap大小的方法
- Java heap space的设置与在myeclipse启动时分配JVM heap大小的方法
- 通过JVM获取相关的服务器信息
- 通过JVM获取相关的服务器信息 .
- JVM内存不足的解决方法, java.lang.OutOfMemoryError: Java heap space
- Myeclipse java.lang.OutOfMemoryError: Java heap space的解决方法
- java获取系统信息:java的信息、操作系统的信息、用户的信息、虚拟机的信息、系统设置的信息。
- java代码获取jvm和heap的内存参数
- java代码获取jvm和heap的内存参数
- jvm 内存溢出 在myeclipse中加大tomcat的jvm内存java.lang.OutOfMemoryError: Java heap space
- JAVA获取操作系统的信息
- java.lang.OutOfMemoryError: Java heap space——Tomcat与eclipse的JVM内存大小设置
- 查询jvm参数以及操作系统信息的java代码
- Eclipse Java heap space问题的的解决方法
- 需要看扫雷代码的,可以留下邮箱
- 预编译头文件原理及处理
- 从业15年,我对国内软件行业的评价
- linux 下的输出重定向
- 访问各种数据库代码
- 各类Java heap space 解决方法,并通过java代码获取JVM的相关信息,所在操作系统的信息(包含eclipse&myeclipse的调试的内存设置)
- inputstream和byte[]相互转换
- ShowModalDialog方法的参数传递研究
- 实例详解$_SERVER函数中QUERY_STRING和REQUEST_URI等四个变量区别
- Discovery 探索频道 -- 轮回的故事
- 微软大中华区CEO陈永正辞职信
- 生命的柠檬茶
- ROR汇集---Transaction
- 在ASP.NET AJAX Control Toolkit 1.0中使用GB2312的编码时出现乱码的两种解决方案