关于JVM
2016-01-05 10:19
351 查看
Runtime.getRuntime().maxMemory()
totalMemory() :返回 Java 虚拟机中的内存总量。 maxMemory() :返回 Java 虚拟机试图使用的最大内存量。 freeMemory() :返回 Java 虚拟机中的空闲内存量。
这里我不解释你写的程序的作用,而是给你介绍一下JAVA虚拟机是如何使用内存的,希望对你有所帮助。 我们知道,JAVA程序本身是不能直接在计算机上运行的,它需要依赖于硬件基础之上的操作系统和JVM(JAVA虚拟机)。JAVA程序启动时JVM都会分配一个初始内存和最大内存给这个应用程序。这个初始内存和最大内存在一定程度上会影响应用程序的性能。 JVM其实就是操作系统上的一个普通程序(进程名叫java,这个程序可以解释执行class文件,系统中当前运行了多少个java程序就会有多少个java进程)。当java进程启动时会首先分配一块堆内存(最小内存),以后每当java程序要求JVM(java进程)分配内存时,JVM就会在预先分配的那块内存上为java程序分配内存,当预先分配的那块内存用完时,JVM会再向操作系统要内存(物理内存),但是JVM不会无限制的向操作系统要内存,当它占用的实际内存达到一个预定值(最大可用内存)时,如果java程序还向JVM要内存,并且JVM无法通过垃圾回收机制回收当前堆中的内存来为java程序服务时,它就会给程序抛出异常:java.lang.OutOfMemoryError。其中内存回收时机并不是在用掉内存达到最大可用内存时才进行,它的运行时机是不确定的。可见JVM的最大可用内存就是java程序能够使用的最大内存。例如:我们把某JAVA程序的JVM最大可用内存设为200M,而我们的物理内存是1G。这种情况下,我们的java程序最多能使用200M内存,虽然我们可能还有800M的内存可用,但是当我们的程序用掉200M后,如果再要内存,JVM不会因为我们还有800M的内存而为我们分配内存,它会抛出java.lang.OutOfMemoryError异常
相关文章推荐
- 找到一款不错的网站压力测试工具webbench[转载]
- [Leetcode]Trapping Rain Water
- [从头学数学] 第28节 数据收集整理
- 最终--VC中MFC如何显示位图(拉伸以及非拉伸)
- find_in_set() 函数 返回str在字符串集strlist中的序号
- 最好的C#教程和参考书
- 如何通过本地电脑连接windows和linux服务器
- 在linux环境下,如何确定是否装有双系统
- SVN使用
- Git tag 常用操作
- 欢迎使用CSDN-markdown编辑器
- tableview样式
- 关系型数据库管理系统简介
- Linux 监控日志文件
- HDU-2191-悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
- Android生成圆形图片
- css_selector的相关匹配问题
- iOS定位获取城市名(ios自学笔记)
- 在linux环境下,如何确定是否装有双系统
- 关于junit测试用例数据不回滚的问题