Tag: permgen

Java – 在线上初始化字符串数组内存分配?

String[] stringArray = new String[] { “abc”, “xyz” }; 执行此行有两个字符串文字在PERMGEN空间中创建“abc”和“xyz”。 由于初始化有一个新的运算符,我不确定是否在HEAP上分配了任何内存。 多谢你们。

执行GC后,为什么分配的永久代的大小会增加?

以下是我从jvisualvm 执行GC后拍摄的快照。 和 第一张图片是Heap stats,第二张图片是perm gen stats。 我无法理解我何时使用 GC 使用堆大小减少(如预期的那样)但是永久代的分配大小增加(尽管使用的permgen大小保持不变)。 What could be the possible explanation of such behavior? 使用JVM参数 -Xbootclasspath/p:../xyz.jar -Xbootclasspath/a:../abc.jar -Djava.endorsed.dirs=../resolver -Djava.library.path=../framework -Djavax.management.builder.initial=JBeanServerBuilder -Djavax.net.ssl.trustStore=../certs -Dorg.mortbay.log.class=JettyLogger -Xms128m -Xmx256m -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=2000 注意:出于正当原因,我更改了名称(ex xyz.jar)。 JVm信息: JVM: Java HotSpot(TM) 64-Bit Server VM (23.6-b04, mixed mode) Java: version 1.7.0_11, vendor Oracle Corporation Java Home: /home/aniket/jdk1.7.0_11/jre JVM Flags:

Tomcat:OutOfMemoryError Permgen Space

我正在使用Tomcat 6开发JSP应用程序。 由于我确实将Quartz Scheduler Framework和Log4J库添加到项目中,因此Tomcat在重新部署时开始抛出此exception。 我已经了解了问题的原因,现在我知道必须使用类加载器。 所以,我想问题可能是由自动加载某些类的记录器库引起的。 我该如何处理这个问题? 有一种方法可以在不使用log4j.properties文件的情况下设置记录器,以确保类加载器能够正常工作。

Weblogic增加内存

如何增加Weblogic(Java)使用的内存。 从eclipse启动服务器时,它显示一条消息,即JAVA Memory arguments: -Xms256m -Xmx512m -XX:MaxPermSize=256m 。 我无法理解它从哪里获取价值。 一段时间后,Weblogic服务器由于低permgen空间而失败。 我从控制台添加了启动参数,但没有任何效果。 你能从哪里获取内存值来帮助我吗?

Java程序故意填写PermGen?

当PermGen已满时,Glassfish有时无法停止,在这种情况下, asadmin stop-domain domain1不起作用。 在Glassfish 2.1.1中它会永远坐在那里; 在3.x中,它在AS_ADMIN_READTIMEOUT之后AS_ADMIN_READTIMEOUT 。 所以我现在正在研究我的Glassfish停止脚本,它将在一定的超时后杀死/杀死它 – 以确保它被停止。 为了完全测试这个,我需要重现这个PermGen完整场景。 我怎么刻意填写PermGen? 我现在正在使用Java 1.7.0_45,如果这很重要的话。 我写了一个程序来填满堆,但对我来说这是一个新的程序,我想我会转向SO。 它可能更棘手(不确定)它需要是什么(.war?)我可以部署到GF。 感谢任何帮助,非常感谢。

Glassfish / Hibernate的PermGen空间问题

我正在Glassfish 3.1上运行GWT + Hibernate应用程序。 几个小时后,我跑出了Permgen空间。 这没有任何webapp重新加载。 我正在运行–XX:MaxPermSize=256m –XmX1024m 。 我接受了这个页面的建议,发现我泄漏了很多类 – 我的所有Hibernate模型和所有GWT RequestFactory代理。 上面引用的指南说“检查链条,找到意外参考,并修复代码”。 说起来容易做起来难。 类加载器始终指向org.glassfish.web.loader.WebappClassLoader的实例。 进一步深入,我发现了许多来自$Proxy135和类似命名对象的引用。 但我不知道怎么回事。

Tomcat线程转储

有没有从Tomcat采取线程转储 。 我想在某个时间监视Tomcat上正在运行的线程。 注意:我在Web逻辑上这样做但我不知道如何在Tomcat上完成它。

为什么PermGen的默认大小如此之小?

限制Java JVM上Permgen空间大小的目的是什么? 为什么不总是将它设置为最大堆大小? 为什么Java默认这么少的64MB? 他们是否试图强迫人们通过这样做来注意代码中的permgen问题? 如果我的应用程序使用85MB的permgen,那么将它设置为96MB可能是安全的,但为什么如果它只是主堆的真正部分呢? 允许JVM在堆允许的情况下使用尽可能多的PermGen会不会有效?

以编程方式填充JVM永久生成(PermGen)内存区域

我需要测试一些我开发的JMX监控脚本,特别是我想validation我对PermGen区域的监控是否正常。 因此,为了测试这一点,我希望能够运行一些代码来加载大量的类以便使用PermGen。 我目前的计划是编写一个脚本来生成prefix(1..n).java编译它们然后在cue上运行: for( int i=1 ; i < n ; i ++){ Class.forName("com.mypackage.prefix"+i); } 是否有更优雅的解决方案来实现这一目标?

生产服务器上的Tomcat,PermGen并重新部署

看起来像 MemoryError: PermGen space java.lang.OutOfMemoryError: PermGen space 是一个常见的问题。 您可以增加烫发空间的大小,但在100或200次重新部署后,它将是满的。 跟踪ClassLoader内存泄漏几乎是不可能的。 你在生产服务器上使用Tomcat(或另一个简单的servlet容器 – Jetty?)的方法是什么? 每次部署解决方案后服务器是否重启? 您是否在许多应用程序中使用一个Tomcat? 也许我应该在不同的端口(或嵌入式Jetty)上使用许多Jetty服务器,并且每次都取消部署/重启/部署?