引言:
JVM在运行时会产生三个ClassLoader,Bootstrap ClassLoader、Extension ClassLoader和AppClassLoader.其中,Bootstrap是用C++编写的,我们在Java中看不到它,是null。
摘要:
摘要:
过去很多年里面,许多的java开发人员都一直在问一个问题:“一个java对象到底耗费多少内存呢?”在本文中,vladimir roubtsov用以前的解决方案来解释了这个问题,在此之外,基于他的经验演示了内存的使用,并且还提供了一些技巧来让你的java程序更加高效。
作者:vladimir roubtsov
近来,我们帮助开发了一个java服务器,这......
摘要:
java初学者往往对如何配置java开发环境感到迷惑,论坛上也有很多朋友在询问关于jdk配置的问题,特别是配置之后,编译java文件的时候,总是碰到这样一个问题,错误提示为:
microsoft windows 2000 [version 5.00.2195]
(c) 版权所有 1985-1998 microsoft corp.
c:\>javac hellowo......
ClassLoader介绍
jvm在运行时会产生三个classloader,bootstrap classloader.extension classloader与appclassloader.其中,bootstrap是用c++编写的,我们在java中看不到它,是null.它用来加载核心类库,在jvm源代码中这样写道:
static const char classpathformat[] =
"%/lib/rt.jar:"
"%/lib/i18n.jar:"
"%/lib/sunrsasign.jar:"
"%/lib/jsse.jar:"
"%/lib/jce.jar:"
"%/lib/charsets.jar:"
"%/classes";
知道为什么不需要在classpath中加载这些类了吧?人家在jvm启动的时候就自动加载了,并且在运行过程中根本不能修改bootstrap加载路径.
extension classloader用来加载扩展类,即/lib/ext中的类.
最后appclassloader才是加载classpath的.
classloader加载类用的是委托模型.即先让parent类(而不是super,不是继承关系)寻找,parent找不到才自己找.看来classloader还是蛮孝顺的.三者的关系为:appclassloader的parent是extclassloader,而extclassloader的parent为bootstrap classloader.加载一个类时,首先bootstrap先进行寻找,找不到再由extclassloader寻找,最后才是appclassloader.
为什么要设计的这么复杂呢?其中一个重要原因就是安全性....
下一页 摘要:
ava里提供的日期和时间类,java.sql.date和java.sql.time,只会从数据库里读取某部分值,这有时会导致丢失数据。例如一个包含2002/05/22 5:00:57 pm的字段,读取日期时得到的是2002/05/22,而读取时间时得到的是5:00:57 pm.
你需要了解数据库里存储时间的精度。有些数据库,比如mysql,精度为毫秒,然而另一些数据库,包......