java enum内存泄漏怎么解决
2017-01-02 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
Java的内存管理就是对象的分配和释放问题。在Java中,程序员需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。在Java中,内存的分配是由程序完成的,而内存的释放是则是由垃圾回收器决定和执行的,这种收支两条线的方法确实简化了程序员的工作。但同时,它也加重了JVM的负担,这也是Java程序运行速度较慢的原因之一。因为,垃圾回收器为了能够正确回收对象,必须监控每一个对象的运行状态,包括对象的申请、引用、被引用、赋值等。监视对象状态是为了准确、及时地释放对象,而释放对象的基本原则就是该对象是否仍被引用。
垃圾收集器的工作是发现应用程序不再需要的对象,并在这些对象不再被访问或引用时将它们删除。垃圾收集器从根节点(在 Java 应用程序的整个生存周期内始终存在的那些类)开始,遍历所有仍被引用的节点,进行垃圾回收。任何对象只要不再被引用,就符合垃圾回收的条件。垃圾回收器回收这些对象后,它们所占用的内存资源也就被返回给了Java虚拟机。
Java使用有向图的方式进行内存管理,可以消除循环引用的问题,例如有三个对象,相互引用,只要它们和根线程不可达,那么垃圾回收器也是可以回收它们的。这种方式的优点是管理内存的精度很高,但是效率较低。另外一种常用的内存管理技术是使用计数器,例如COM模型采用计数器方式管理构件,它与有向图相比,精度较低(很难处理循环引用的问题),但执行效率却很高。
垃圾收集器的工作是发现应用程序不再需要的对象,并在这些对象不再被访问或引用时将它们删除。垃圾收集器从根节点(在 Java 应用程序的整个生存周期内始终存在的那些类)开始,遍历所有仍被引用的节点,进行垃圾回收。任何对象只要不再被引用,就符合垃圾回收的条件。垃圾回收器回收这些对象后,它们所占用的内存资源也就被返回给了Java虚拟机。
Java使用有向图的方式进行内存管理,可以消除循环引用的问题,例如有三个对象,相互引用,只要它们和根线程不可达,那么垃圾回收器也是可以回收它们的。这种方式的优点是管理内存的精度很高,但是效率较低。另外一种常用的内存管理技术是使用计数器,例如COM模型采用计数器方式管理构件,它与有向图相比,精度较低(很难处理循环引用的问题),但执行效率却很高。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询