`
phpxiaoxin
  • 浏览: 251162 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 关于内存溢出的相关知识

    博客分类:
  • java
阅读更多

 

 

http://developer.51cto.com/art/200906/129346.htm

Java内存溢出的详细解决方案

 

本文介绍了java内存溢出的时候可以通过设置各种参数来解决的方案。

包括:java.lang.OutOfMemoryError: PermGen space

与:java.lang.OutOfMemoryError: Java heap space

并介绍了解决方案中各个参数的意义。如:-XX:PermSize  -Xmx

也介绍了一些入门的GC概念。

 

http://developer.51cto.com/art/200906/128944.htm

Java程序性能优化之找出内存溢出元凶

 

本文讲述了内存分析工具:JProbe 并给出了一些导致内存溢出的建议,

那就是不用的对象要设置为null,并保证没有map,list等其他对象保存其引用

 

http://tech.ifeng.com/internet/detail_2011_03/08/5022006_0.shtml

Java内存查看与分析

 

本文讲述了java gc的区域划分,使用java自带的工具进行内存使用情况分析。

提到了jconsole、jmap、jhat、jstat等工具,并深入讲述了eden,susvivor0,susvivor1

 

java.lang.OutOfMemoryError: Java heap space 的解决方法

这篇文章提到了关于java 内存使用情况查看的方法:

 

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内存溢出解决办法

    Java内存溢出问题,全称为Java OutOfMemoryError,是Java开发者经常遇到的运行时异常。...了解和掌握这些知识点,可以帮助开发者在遇到Java内存溢出问题时迅速定位并解决,确保应用的稳定性和效率。

    java 内存溢出分析工具 HeapAnalyzer

    Java内存溢出(Out of Memory,OOM)是Java应用程序中常见的问题,会导致程序崩溃或性能急剧下降。HeapAnalyzer是一款强大的工具,专为分析Java应用程序的内存状况,特别是针对内存溢出问题进行诊断。本文将详细介绍...

    内存泄漏与内存溢出

    以下是对这两个概念及其相关知识点的深入探讨。 ### 内存泄漏 内存泄漏是指程序在申请内存后未能释放已分配的内存空间,导致这些内存无法被系统回收,从而逐渐消耗可用内存的过程。在多线程或长时间运行的应用中,...

    内存溢出配置,内存溢出配置

    接下来,我们将深入探讨与内存溢出配置相关的几个关键知识点。 ### 1. 内存溢出的概念 内存溢出是指程序运行时,申请的内存空间超过了系统能够提供的最大值,导致程序无法继续执行下去的现象。在Java中,主要分为...

    解决Java程序内存溢出的办法

    1. **了解内存结构**:Java内存主要分为堆内存(Heap)、栈内存(Stack)、方法区(Method Area)、本地方法栈(Native Method Stack)和程序计数器(PC Register)。不同的对象和数据类型在不同的内存区域中分配,...

    关于static的小结(Java内存溢出)

    在《关于static的小结(Java内存溢出)》这篇文章中,作者主要探讨了与Java中的`static`关键字相关的知识点,以及如何可能导致内存溢出的情况。下面我们将深入分析这些内容。 #### Java中的`static`关键字 `static...

    myeclipse内存溢出问题解决方案

    本文主要讨论如何解决MyEclipse中的内存溢出问题以及相关的Java内存管理知识点。 首先,解决内存溢出问题的关键在于调整JVM的内存配置。在MyEclipse中,可以通过以下路径进行设置:Window &gt; Preferences &gt; ...

    解决jetty8内存溢出版本

    Jetty 8是一款轻量级、高性能的Java Web服务器和Servlet容器,被广泛用于开发、测试和部署Web应用程序。...通过对上述知识点的理解和实践,可以有效地预防和解决Jetty 8的内存溢出问题,提高服务的稳定性和性能。

    解决JAVA内存溢出问题

    在探讨如何解决JAVA内存溢出问题时,我们首先需要理解几个关键的概念,包括JVM(Java虚拟机)、Tomcat服务器、以及与之相关的内存参数设置。本文将详细解析标题及描述中提到的知识点,帮助读者深入理解JAVA内存管理...

    Java内存溢出

    Java内存溢出的知识点 Java内存溢出是指Java虚拟机(JVM)在执行过程中无法分配对象所需的内存,导致程序崩溃或无法继续运行的错误。Java内存溢出类型有多种,下面将详细介绍其中的四种类型。 1. java.lang....

    java内存泄露、溢出检查方法和工具

    本文将基于一个真实的案例,深入探讨Java内存溢出的原因分析、解决方案以及常用的检查方法和工具。 #### 二、Java内存管理基础知识 在理解内存泄露和溢出之前,我们需要先了解Java虚拟机(JVM)的基本内存结构及其...

    某应用内存溢出(暨jvm)分析分享

    标题 "某应用内存溢出(暨jvm)分析分享" 提到的是一个关于应用程序,特别是N银行消费信贷backend应用的内存溢出问题及其在Java虚拟机(JVM)层面上的分析。内存溢出是程序运行时由于分配的内存不足导致无法继续执行...

    MyEclipse 内存溢出

    【标题】"MyEclipse 内存溢出"所涉及的知识点主要集中在Java开发环境的配置和优化上,特别是针对大型项目或者复杂代码时可能出现的性能问题。MyEclipse是基于Eclipse的一款强大的Java集成开发环境,对于内存管理不当...

    解决Java导入excel大量数据出现内存溢出的问题

    解决Java导入excel大量数据出现内存溢出的问题 在Java中导入大量Excel数据时,可能会出现内存溢出的问题,这是因为Excel文件中的大量数据会被加载到内存中,从而导致内存溢出。今天,我们将介绍如何解决这个问题。 ...

    深入理解Java虚拟机——Java内存区域与内存溢出异常.xmind

    这是自己读《深入理解Java虚拟机》时候用XMind建立的思维导图,目的是为了能够帮助自己整理、梳理相关的知识以及方便自己日后的回顾,帮助自己建立起关于JVM的知识体系,里边也有一些对相关内容的补充,通过备注的...

    java内存泄漏与内存溢出关系解析

    java内存泄漏与内存溢出关系解析是java开发者需要了解的重要知识点之一。下面我们将详细介绍java内存泄漏与内存溢出的关系、原因和解决方法。 一、内存泄漏和内存溢出的定义 java中有两个重要的概念:内存泄漏...

    PIO导入大量数据时的解决内存溢出问题.doc

    PIO 导入大量数据时的解决内存溢出问题的知识点: 1. 使用 EventUserModel 模式来避免内存溢出问题。 2. 使用 HSSFListener 接口来处理每个单元格的数据。 3. 使用 optRows 方法来对行级数据进行操作。 4. 使用抽象...

Global site tag (gtag.js) - Google Analytics