|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。明天花了一成天在跟踪一个成绩,每次感到已快找到缘故原由的时分发明征象又变了,我以为从中吸收的教导能够给人人分享一下。
为了重现这个征象,我写了一个复杂的例子。在本例中,先初始化了一个map,然后用一个无穷轮回将一些键值对拔出到map内里:- classWrapper{publicstaticvoidmain(Stringargs[])throwsException{Mapmap=System.getProperties();Randomr=newRandom();while(true){map.put(r.nextInt(),"value");}}}
复制代码 你大概也猜到了,这段代码编译实行后没法一般停止。当我用这组参数启动的话:- java-Xmx100m-XX:+UseParallelGCWrapper
复制代码 我会在终端中看到java.lang.OutOfMemoryError:GCoverheadlimitexceeded的非常信息。不外假如我调剂一下堆巨细大概是GC的范例的话,在我的MacOSX10.9.2体系上用OracleHotspotJDK1.7.0_45来运转,就会呈现分歧的情形。
好比说,我用一个较小的堆来运转这个程序,就像上面如许:- java-Xmx10m-XX:+UseParallelGCWrapper
复制代码 使用程序会抛出一段人人更熟习的毛病信息然后挂失落:java.lang.OutOfMemoryError:Javaheapspace。
假如你换成ParallelGC之外的GC战略的话,好比说-XX:+UseConcMarkSweepGCor-XX:+UseG1GC,你将会看到由默许的非常处置器所抛出的非常,而且你看不到仓库信息了,由于堆已没有空间了,乃至连非常的仓库信息都没法添补了,因而它在创立非常的时分就挂失落了:- MyPrecious:examplesvladimir$java-Xmx100m-XX:+UseConcMarkSweepGCWrapperException:java.lang.OutOfMemoryErrorthrownfromtheUncaughtExceptionHandlerinthread"main"
复制代码 这申明了甚么?当资本紧缺的时分,你基本没法判别你的使用程序是怎样挂失落的,因而不要期望能呈现你所预期的一系列毛病提醒。从下面这个例子中能够看到,你的程序大概会以三种完整分歧的体例挂失落:
<olstyle="margin:0px0px1em;padding:0px0px0px20px;list-style-type:disc;font-family:Georgia,HiraginoSansGB,宋体;background-color:rgb(227,222,216);">GC的平安性反省失利:一旦GC消费的工夫占到98%以上的话,JVM就会宣布屈膝投降了:java.lang.OutOfMemoryError:GCoverheadlimitexceeded。
没法为下一个操纵分派充足的内存:假如没法满意下一条指令所必要分派的内存的话,你会收到一条”java.lang.OutOfMemoryError:Javaheapspace”的毛病信息。
Java的B/s开发是通常是javaweb开发,又叫J2EE开发,J2SE是手机开发。C#的C/s和B/s开发是说.net网页编程和Asp开发。。u在这里说明一点;资深一点的Java和C#程序员都明白一点 |
|