当前位置:清歌>都市言情>带着游戏账号流浪> 第10章 排位中
阅读设置 (推荐配合 快捷键[F11] 进入全屏沉浸式阅读)

设置X

第10章 排位中(1 / 2)

今天晚上又打排位了

3、错误

定义:Error类及其子类。

特点:和运行时异常一样,编译器也不会对错误进行检查。

当资源不足、约束失败、或是其它程序无法继续运行的条件发生时,就产生错误。程序本身无法修复这些错误的。例如,VirtualMacheError就属于错误。出现这种错误会导致程序终止运行。OutOfMeoryError、ThreadDeath。

Java虚拟机规范规定JVM的内存分为了好几块,比如堆,栈,程序计数器,方法区等

25、OOM你遇到过哪些情况,SOF你遇到过哪些情况

OOM:

1,OutOfMeoryError异常

除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMeoryError(OOM)异常的可能。

JavaHeap溢出:

一般的异常信息:java.ng.OutOfMeoryError:Javaheapspacess。

java堆用于存储对象实例,我们只要不断的创建对象,并且保证GCRoots到对象之间有可达路径来避免垃圾回收机制清除这些对象,就会在对象数量达到最大堆容量限制后产生内存溢出异常。

出现这种异常,一般手段是先通过内存映像分析工具(如EclipseMeoryAnalyzer)对dup出来的堆转存快照进行分析,重点是确认内存中的对象是否是必要的,先分清是因为内存泄漏(MeoryLeak)还是内存溢出(MeoryOver?ow)。

如果是内存泄漏,可进一步通过工具查看泄漏对象到GCRoots的引用链。于是就能找到泄漏对象是通过怎样的路径与GCRoots相关联并导致垃圾收集器无法自动回收。

如果不存在泄漏,那就应该检查虚拟机的参数(-Xx与-Xs)的设置是否适当。

2,虚拟机栈和本地方法栈溢出

如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOver?owError异常。如果虚拟机在扩展栈时无法申请到足够的内存空间,则抛出OutOfMeoryError异常

这里需要注意当栈的大小越大可分配的线程数就越少。

3,运行时常量池溢出

异常信息:java.ng.OutOfMeoryError:PerGenspace

如果要向运行时常量池中添加内容,最简单的做法就是使用Strg.tern这个Native方法。该方法的作用是:如果池中已经包含一个等于此Strg的字符串,则返回代表池中这个字符串的Strg对象;否则,将此Strg对象包含的字符串添加到常量池中,并且返回此Strg对象的引用。由于常量池分配在方法区内,我们可以通过-XX:PerSize和-XX:MaxPerSize限制方法区的大小,从而间接限制其中常量池的容量。

4,方法区溢出

方法区用于存放Css的相关信息,如类名、访问修饰符、常量池、字段描述、方法描述等。也有可能是方法区中保存的css对象没有被及时回收掉或者css信息占用的内存超过了我们配置。

异常信息:java.ng.OutOfMeoryError:PerGenspace

方法区溢出也是一种常见的内存溢出异常,一个类如果要被垃圾收集器回收,判定条件是很苛刻的。在经常动态生成大量Css的应用中,要特别注意这点。

SOF(堆栈溢出StackOver?ow):

StackOver?owError的定义:当应用程序递归太深而发生堆栈溢出时,抛出该错误。

因为栈一般默认为1-2,一旦出现死循环或者是大量的递归调用,在不断的压栈过程中,造成栈容量超过1而导致溢出。

栈溢出的原因:递归调用,大量循环或死循环,全局变量是否过多,数组、List、ap数据过大。

26、简述线程、程序、进程的基本概念。以及他们之间关系是什么?

线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。

程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。

进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。简单来说,一个进程就是一个执行中的程序,它在计算机中一个指令接着一个指令地执行着,同时,每个进程还占有某些系统资源如CPU时间,内存空间,文件,

上一章 目录 +书签 下一页