内存机制
1.不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址。
2.Java中对象是采用new或者反射的方法创建的
3.GC为了能够正确释放对象,会监控每个对象的运行状况,对他们的申请、引用、被引用、赋值等状况进行监控。
赋值,内存是可以赋值的,对应于object.setValue("1")
4.Java会使用有向图的方法进行管理内存,实时监控对象是否可以达到,如果不可到达,则就将其回收
5.像HashMap、Vector等的使用最容易出现内存泄露,这些静态变量的生命周期和应用程序一致,他们所引用的所有的对象Object也不能被释放,因为他们也将一直被Vector等引用着。
6.Java中的内存泄露当然是指:存在无用但是垃圾回收器无法回收的对象。垃圾回收器无法回收,垃圾回收器无法回收。
垃圾回收器无法回收,垃圾回收器无法回收。
7.方法区内存溢出(outOfMemoryError:permgem space)
在jvm规范中,方法区主要存放的是类信息、常量、静态变量等。
所以如果程序加载的类过多,或者使用反射、gclib等这种动态代理生成类的技术,就可能导致该区发生内存溢出,一般该区发生内存溢出时的错误信息为:
1
|
outOfMemoryError:permgem space |