7、如何让Java中的静态常量池内存溢出?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7、如何让Java中的静态常量池内存溢出?相关的知识,希望对你有一定的参考价值。

/**
* VM Args:-XX:PermSize=10M -XX:MaxPermSize=10M (jdk1.6)
*/
public class RuntimeConstantPoolOOM
public static void main(String[] args)
// 使用List保持着常量池引用,避免Full GC回收常量池行为
List<String> list = new ArrayList<String>();
// 10MB的PermSize在integer范围内足够产生OOM了
int i = 0;
while (true)
list.add(String.valueOf(i++).intern());


参考技术A 这个不可能的,因为常量不能修改。

sql SGA池内存的详细信息

COLUMN pool    HEADING "Pool"
COLUMN name    HEADING "Name"
COLUMN sgasize HEADING "Allocated" FORMAT 999,999,999,999
COLUMN bytes   HEADING "Free" FORMAT 999,999,999,999
SET LINES 250

SELECT
    f.pool
  , f.name
  , s.sgasize
  , f.bytes
  , ROUND(f.bytes/s.sgasize*100, 2) "% Free"
FROM
    (SELECT SUM(bytes) sgasize, pool FROM v$sgastat GROUP BY pool) s
  , v$sgastat f
WHERE
    f.name = 'free memory'
  AND f.pool = s.pool;

以上是关于7、如何让Java中的静态常量池内存溢出?的主要内容,如果未能解决你的问题,请参考以下文章

内存溢出

java内存溢出怎么解决?

java栈内存溢出怎么解决

图解Java内存区域及内存溢出异常

深入理解JVM阅读笔记-内存溢出小结

Java 内存区域与内存溢出