草庐IT

C++流到内存

全部标签

java - 在 map 中存储大量字符串的最有效内存方法是什么?

我想在Map中存储大量字符串,所以MagicObjects可以快速访问。此Map的条目太多,内存已成为瓶颈。假设MagicObjects无法优化,对于这种情况,我可以使用的最有效的map类型是什么?我目前正在使用以下内容:gnu.trove.map.hash.TCustomHashMap 最佳答案 如果您的key足够长并且有很多足够长的通用前缀,那么您可以使用trie来节省内存。(前缀树)数据结构。thisquestion的答案指向trie的几个Java实现。 关于java-在map中存

java - 如何减少 HashMap<String, Integer> 类数据结构的内存使用

在开始解释我的问题之前,我应该说明我不是在寻找增加Java堆内存的方法。我应该严格存储这些对象。我正在努力将大量(5-10GB)的DNA序列及其计数(整数)存储在哈希表中。DNA序列(长度不超过32)由“A”、“C”、“G”、“T”和“N”(未定义)字符组成。众所周知,当在内存中存储大量对象时,与C和C++等低级语言相比,Java的空间效率较差。因此,如果我将此序列存储为字符串(对于长度约为30的序列,它占用大约100MB的内存),我会看到错误。我试图将核酸表示为“A”=00、“C”=01、“G”=10、“T”=11并忽略“N”(因为它破坏了char到2位转换为第5种酸)。然后,将这些

java - 类管理自己的内存

EffectiveJava:第6条:消除过时的对象引用。Generallyspeaking,wheneveraclassmanagesitsownmemory,theprogrammershouldbealertformemoryleaks.Wheneveranelementisfreed,anyobjectreferencescontainedintheelementshouldbenulledout.我认为我没有完全理解描述。管理自己内存的类的示例有哪些-我可以想到数组、列表,也许还有映射。谁能更详细地解释书中的项目?谢谢 最佳答案

java - 令人困惑的Tomcat持久 session 内存配置文件

与任何内存管理问题一样,这是一个很长的故事,所以请牢牢捕获。我们的应用程序遇到了一些内存管理问题,因此,我一直在尝试对该应用程序进行概要分析,以了解问题出在哪里。我今天早些时候看到了这个线程:TomcatSessionEvictiontoAvoidOutOfMemoryError……似乎跟我在探查器中看到的一样。基本上,如果我用Jmeter吸引了一群用户使用该应用程序,它将长时间保留在堆内存上,最终直到session开始过期为止。但是,与该线程中的发布者不同,我拥有源代码,并且可以尝试使用Tomcat来实现持久状态session,这是我今天一直在尝试的工作,但取得的成功有限。我认为这是

Java 正在分配额外的 2gb 内存

我有一个新的VPS来运行我和一些伙伴制作的一些java程序。我用这样一行开始这个过程:java-Xmx512M-jarprogram.jar在我们的旧VPS上,您可以使用“top”命令查看使用了多少虚拟内存和常驻内存。它会使用600-700mb的虚拟内存。现在在我们的新VPS上,使用相同的命令,虚拟内存似乎总是比-Xmx值多~2gb。因此,虚拟内存不是大约600-700mb,而是2700-3000mb。旧的VPS运行CentOS5.7,新的运行CentOS6.2。两者都运行JRE1.7u364位。为什么会这样,我该如何解决?编辑:顶部PIDUSERPRNIVIRTRESSHRS%CPU

java - 如何减少JVM虚拟内存的使用?

我有一个Java程序可以在具有2GB物理内存和2GB交换空间的Solaris10X86上运行。该程序在Linux64位上运行良好,仅占用约450MB内存。但是当它在Solaris中运行时,它总是报告OutOfMemoryError,我注意到就在错误发生之前,它试图使用>4GB的虚拟内存,这在32位系统上是绝对不可能的。那么为什么JVM会尝试使用那么多的虚拟内存呢?有没有办法告诉JVM不要使用那么多虚拟内存?谢谢。编辑:谢谢大家的意见!这是完整的错误消息:##ThereisinsufficientmemoryfortheJavaRuntimeEnvironmenttocontinue.#

java - 为什么从命令行运行的可执行 jar 比从 Eclipse 运行的同一项目使用更多的内存?

为什么从命令行运行的可执行jar比从Eclipse运行的同一项目使用更多的RAM-在我的例子中大约多7倍?在开发项目时,我从Eclipse(运行->运行)运行应用程序,它使用了大约60mb(我查看了刚刚创建的javaw.exe进程)的ram,而如果我创建一个可执行JAR并从命令运行它行(Windows)ram使用量约为450mb。此外,与从Eclipse的运行->运行相比,从命令行运行时ram使用变化的幅度更大。 最佳答案 这可能与Eclipse启动应用程序时使用的JVM设置有关。启动Jar时,Java将根据内存做出最佳猜测以使用哪

java - 使用C++编写的Java读取共享内存数据

我有一个C/C++应用程序,它在Unix的共享内存中写入数据。现在我想通过使用Java的程序读取共享内存数据。程序应该读取共享内存数据。有可能吗?如果可能,需要一个小的实现。 最佳答案 看看thiscodeproject项目(对于Windows):UsingMemoryMappedFilesandJNItocommunicatebetweenJavaandC++programs或者,this图书馆:CLIPCisanopen-sourceJavalibrarythatgivesdevelopersinterprocesscommun

java - 这是java内存泄漏吗

更新:看起来这不是内存泄漏,有人会基于这个例子的扩展创建吗?原问题:假设我创建并启动了一个不会终止的线程,只要它还活着,该线程就会创建一个对象和引用。请参见以下代码。JVM会收集垃圾x吗?这会被视为内存泄漏吗?publicclassMyRunnableimplementsRunnable{publicvoidrun(){Xx=newX();while(true){}}}Threadt=newThread(newMyRunnable());t.start(); 最佳答案 线程永远不会终止,所以垃圾收集器永远不会释放x。但是,如果您从未

java - 在 Spring MVC 应用程序中查找内存泄漏

我最近做了thistutorial并让代码运行良好。然后,今天,我在Eclipse中重新打开项目并选择RunAs...RunonServer。从Eclipse控制台中运行的日志来看,该应用程序似乎经历了正常的加载过程,但是当我期望该应用程序改为在浏览器中加载时,Eclipse控制台中出现了以下错误消息:Exceptioninthread"http-bio-8080-exec-3"java.lang.OutOfMemoryError:PermGenspace我也确实运行了来自thistutorial的代码之前,并打开了一些blob文件,但我不认为这是导致问题的原因,因为即使我关闭所有内容