JVM heap
来源:百度文库 编辑:神马文学网 时间:2024/06/30 20:55:13
在解决jvm超出堆内存大小的java.lang.OutOfMemoryError: Java heap space错误时,我从网上搜的解决解决方案,借助jconsole成功解决。我按照网友的方案将heap堆内存(最小)分配为512m。在使用jconsole监控整个流程发现: 在很长一段时间jvm占用内存在300m左右。我没有修改的时候,分配的内存也就6M左右,占用内存经常徘徊在4.8M左右,程序也能正常运行。经过我分析,应该和jvm的gc回收机制有关吧。当jvm使用内存达到分配内存的一个百分比之后,进行垃圾回收。由此可见,并不是给jvm分配的heap堆内存越大越好。 -----Java的GC收集,一直是程序设计的一大弊端.
从源头上来说,Java有一个理念,万事万物皆对象.于是在Java里面,几乎所有的东西都用对象来表示,尤其是字符串也用对象来表示,而且是用不可修改的字符串来表示.于是每次字符串的修改,都会引起内存的再分配过程.
Java里面的垃圾多,根本原因是没必要的对象太多.这些对象一会儿活过来,一会儿又死过去,最后应用程序就不断在创造垃圾,然后回收这些垃圾.
要解决这个问题,有一个很简单的方案.
其一,减少类的数量,别搞那么多空架子的类出来,尤其是接口和抽象类.
其二.把访问比较少的类,直接定义成static的,这样只会生成一个实例,既不需要创建,也不需要收集,内存的使用就稳定了.
从根本上来说,内存的混乱是一个程序的架构问题,而不仅仅是应用服务器参数调整的问题.
从源头上来说,Java有一个理念,万事万物皆对象.于是在Java里面,几乎所有的东西都用对象来表示,尤其是字符串也用对象来表示,而且是用不可修改的字符串来表示.于是每次字符串的修改,都会引起内存的再分配过程.
Java里面的垃圾多,根本原因是没必要的对象太多.这些对象一会儿活过来,一会儿又死过去,最后应用程序就不断在创造垃圾,然后回收这些垃圾.
要解决这个问题,有一个很简单的方案.
其一,减少类的数量,别搞那么多空架子的类出来,尤其是接口和抽象类.
其二.把访问比较少的类,直接定义成static的,这样只会生成一个实例,既不需要创建,也不需要收集,内存的使用就稳定了.
从根本上来说,内存的混乱是一个程序的架构问题,而不仅仅是应用服务器参数调整的问题.
JVM heap
什么是JVM
jvm常识
JVM 内存
JVM调整:应对jvm crash
JVM调优总结
[精]JVM优化配置
JVM垃圾回收原理
深入理解JVM
Debug Tutorial Part 3: The Heap
堆(heap)和堆栈(stack)的区别
java.lang.OutOfMemoryError: Java heap space_gisland
堆排序 ( Heap Sort ) - _jaskell - 博客大巴
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space 解...
关于java.lang.OutOfMemoryError: Java heap space...
JVM 中的堆和栈
JVM Endorsed Standards Override Mechanism
JVM优化配置(转)
设置tomcat中的jvm内存
JVM调优[转] 城市胡同
Java Essence: 為什麼需要 JVM?
堆(heap)和栈(stack)的区别|堆,heap,栈,stack,区别-中国源码网: ...
Java heap space 错误解决_风中之歌