关于java vm的垃圾收集

2016-02-19 16:28 2 1 收藏

图老师小编精心整理的关于java vm的垃圾收集希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

【 tulaoshi.com - 编程语言 】

  一、sun jvm的自动收集与编程显式调用System.gc()是有区别的,

  自动回收的线程级别是最低的,如果系统越来越繁忙,压力越来越大,那么自动回收的线程运行的机会就会变小,甚至不会运行,结果是内存不能释放;

  不建议使用编程调用System.gc()是因为垃圾收集时,系统会挂起,而编程调用一般是定时处理的,并且用户线程度高于5,即肯定会被运行(这个我用过,回收效果明显,做过j2me的朋友肯定会有更深的体会的),所以系统也会定时地被挂起,也就影响到了系统的响应,但并不明显。

  二、综上所述,在适当的时候调用System.gc()两次是合适的,注意两次只是个人经验,大家可以试验。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  三、另外,sun jvm只适合开发环境,即启动速读比较快,

  在产品或生产环境下,我建议大家使用jrocket vm,从bea的官方网站上可以免费下载;这个vm不仅具有并行和分代垃圾收集的功能(即垃圾收集线程和用户线程具有同等的优先级,并且可以同时运行,不会挂起系统;垃圾收集具有更细的粒度级),并且可以大幅度提高系统运行性能。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

来源:https://www.tulaoshi.com/n/20160219/1612245.html

延伸阅读
Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为Java也存在内存泄露,但它的表现与C++不同。 随着越来越多的服务...
第一,final, finally, finalize的区别。 final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能...
JAVA数组与容器类主要有三方面的区别:效率、类型和保存基本类型的能力 。在JAVA中,数组是一种效率最高的存储和随机访问对象引用序列的方式。数组就是一个简单的线性数列,这使得元素访问非常快速。但是为此付出的代价却是数组的大小被固定,并且在其生命周期中不可改变。 由于范型和自动包装机制的出现,容器已经可以与数组几乎一样方便地...
标签: Java JAVA基础
简单介绍一下Java关于xml的API,这样大家看到了缩写就知道是干什么的了。水平有限,多多包涵。 1、JAXP(Java API for XML Parsing) 2、JAXB(Java API for XML Binding) 3、JAXM(Java API for XML Messaging) 4、JAX-RPC(Java API for XML-RPC) 1、JAXP定义了在Java中使用DOM, SAX, XSLT的...
引言 Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new、newarray、anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放。一般来说,堆的是由垃圾回收 来负责的,尽管JVM规范并不要求特殊的垃圾回收技术,甚至根本就不...

经验教程

616

收藏

42
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部