草庐IT

memory-barriers

全部标签

java - PermGen Out of Memory 原因

我不断地在我的环境中检测PermGen中的OOM:Java6jboss-4.2.3不是大型网络应用我知道String.intern()问题-但我没有充分利用它。增加MaxPermGen的大小并不费力(从128Mb到256Mb)。还有什么其他原因可以为PermGen调用OOM?在这种情况下,哪种调查方案最好(策略、工具等)?感谢您的帮助 最佳答案 Seethisnote将JDBC驱动程序放在common/lib(如tomcat文档所述)而不是WEB-INF/lib不要将commons-logging放入WEB-INF/lib,因为to

java - Ehcache中的 "cache misses"和 "in memory cache misses"有什么区别?

我正在查看EhCache统计数据,我看到了这些数字:CacheMisses:75977CacheHits:38151InMemoryCacheMisses:4843InMemoryCacheHits:38151“内存”是唯一的存储-没有堆外存储,也没有磁盘存储(overflowToDisk="false",diskPersistent="false")。那么这两个是什么意思呢?我希望它们是相同的(命中率相同),但未命中率差异很大。 最佳答案 您的缓存中是否有一些null值的Element?(Ehcache允许您使用null值存储El

java - 在 x86 上比较和交换 - 为什么它是一个完整的障碍?

根据this问题的答案,似乎x86上的LOCKCMPXCHG实际上会导致完全障碍。据推测,这也是Unsafe.compareAndSwapInt()在后台生成的内容。我很难理解为什么会这样:使用MESI协议(protocol),在更新缓存行之后,CPU是否可以简单地使其他内核上的缓存行无效,而不是耗尽执行CAS的内核的所有存储/加载缓冲区?对我来说似乎相当浪费... 最佳答案 据我所知,您的答案在评论中-MESI更新缓存,而不是Store/Loadbuffers。但是lockLOCKCMPXCHG说:lockedoperations

java - Eclipse Memory Analyzer - Leak Suspects Report 没有指向我的类 - 为什么?

我正在尝试确定我的web应用程序中是否存在内存泄漏。我正在使用VisualVM和JMeter来加载测试和观察堆。我昨天将堆转储保存到文件并下载了EclipseMemoryAnalyzer...在对VisualVM感到非常沮丧之后,我认为Eclipse会比VisualVM更好地查明泄漏(如果有的话)。我在Eclipse中打开堆文件并运行他们所谓的泄漏嫌疑报告。我以为它会指向我的webapp中的一个特定类,但事实并非如此。所以我不知道如何使用它提供的信息来找出泄漏嫌疑人在我的任何特定类别中的位置。这是我的一个堆转储文件的泄漏可疑报告的结果。Oneinstanceof"org.apache.

java - 堆内存使用中的 PS Old Gen 内存 : GC settings for Java Out Of Memory Exception

以下是我的JVM设置:JAVA_OPTS=-server-Xms2G-Xmx2G-XX:MaxPermSize=512M-Dsun.rmi.dgc.client.gcInterval=1200000-Dsun.rmi.dgc.server.gcInterval=1200000-XX:+UseParallelOldGC-XX:ParallelGCThreads=2-XX:+UseCompressedOops-Djava.net.preferIPv4Stack=true-Djboss.modules.system.pkgs=org.jbos88,server=y,suspend=n问题:总

java - 比较 java 内存堆转储 : Memory profiling for Java desktop application

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。这是一个更具体的问题,需要跟进anotherquestionthatIhaveaskedrecently.此问题的正确答案也将获得前一个问题的正确答案(因为它仍处于不确定状态)!基本上,我有一个存在内存泄漏问题的Java桌面应用程序。我正在使用NetbeansIDE中的内存分析器来分析内存问题。这些是我到目前为止已采取的步骤:将新的内存分析器附加到Netb

java.net.SocketException : Cannot allocate memory (not Mac) 异常

我在运行ubuntu10.04的tomcat7上部署了一个java应用程序。打开服务器套接字时出现问题,目前我无法重现:java.net.SocketException:Cannotallocatememoryatjava.net.PlainSocketImpl.socketBind(NativeMethod)atjava.net.AbstractPlainSocketImpl.bind(UnknownSource)atjava.net.ServerSocket.bind(UnknownSource)atorg.subethamail.smtp.server.SMTPServer.cr

Linux——详解共享内存shared memory

目录一.共享内存介绍(一).什么是共享内存(二).共享内存优点(三).共享内存缺点二.共享内存使用(一).创建—shmget①key②size③shmflg④返回值(二).连接—shmat(三).分离—shmdt(四).销毁—shmctl(五).查看—ipcs(六).删除—ipcrm(七).读取与写入 三.共享内存与访问控制(一).添加访问控制(二).可能的陷阱一.共享内存介绍(一).什么是共享内存共享内存本质上就是内存中的一块区域,用于进程间通信使用。该内存空间由操作系统分配与管理。与文件系统类似的是,操作系统在管理共享内存时,不仅仅有内存数据块,同时还会创建相应结构体来记录该共享内存属性,

java - 为 Unsafe.putOrdered*() 的发布实现获取?

您认为在Java中实现发布/获取对的获取部分的最佳正确方法是什么?我正在尝试使用经典的发布/获取语义(没有StoreLoad并且没有跨线程的顺序一致性)对我的应用程序中的一些操作进行建模。有几种方法可以在JDK中实现大致相当于商店发布的效果。java.util.concurrent.Atomic*.lazySet()和底层sun.misc.Unsafe.putOrdered*()是最常被引用的方法。但是,没有明显的方法来实现加载获取。允许lazySet()的JDKAPI大多在内部使用volatile变量,因此它们的存储发布与易变加载配对。从理论上讲,volatile加载应该比加载获取更

Java Lock支持内存一致性

Java6API问题。调用LockSupport.unpark(thread)与刚刚取消停放的线程中LockSupport.park的返回有happens-before关系吗?我强烈怀疑答案是肯定的,但Javadoc似乎没有明确提及。 最佳答案 我刚刚发现了这个问题,因为我也在问自己同样的问题。根据thisarticlebyOracle研究员DavidDice,答案似乎是否。这是文章的相关部分:Ifathreadisblockedinpark()we'reguaranteedthatasubsequentunpark()willma