4.2.4 Java池

Java池是SGA中一段可选的存储区域。如果要在数据库中运行Java应用程序,那么对用户的每个会话来说,都需要一个单独的Java虚拟机。实际情况是,每个Java虚拟机仅仅需要很小的一段内存空间,大约是35KB。Java虚拟机为什么能在这么小的内存空间中运行呢?

在实例启动时,可以为在SGA中分配一个Java池,用来存放运行Java所必需的共享代码和共享数据。多个Java应用程序可以共享Java池中的代码和数据。在有些情况下,每个用户的Java会话信息也存储在Java池中。

Java池的大小由初始化参数JAVA_POOL_SIZE指定,默认大小为20MB,在运行Java应用程序时,每个类大约需要4KB~8KB的Java池空间,这样我们可以根据Java应用程序中类的个数来大概估计一下所需的Java池空间。

另外,我们还可以通过查询动态性能视图v$sgastat来了解Java池的使用情况。例如:


SQL>SELECT*FROM v$sgastat WHERE pool='java pool';

POOL NAME BYTES


java pool free memory 4194304