一天前,经过几个月的正常工作,我们的java应用程序偶尔会崩溃并出现以下错误:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (safepoint.cpp:247), pid=2075, tid=140042095163136
# guarantee(PageArmed == 0) failed: invariant
#
# JRE version: 6.0_23-b05
# Java VM: Java HotSpot(TM) 64-Bit Server VM (19.0-b09 mixed mode linux-amd64 compressed oops)
# An error report file with more information is saved as:
# /var/chat/jSocketer/build/hs_err_pid2075.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
Run Code Online (Sandbox Code Playgroud)
我查看了hs_err_pid2075.log,看到有一个活动线程处理网络通信.但是,在过去几个月中没有进行任何应用程序或环境更改.也没有任何负载增长.我该怎么做才能理解,崩溃的原因是什么?是否有任何常见的步骤来调查jvm崩溃?
我开发了一个应用程序,它通过具有给定偏移量的块来从Internet借用数据.出于测试目的,我有一个转储文件,其中包含每行与单独块相对应的行.我想从url和dump文件中概括读取操作.目前,我有以下功能:
getChunk :: DataSourceMode -> Config -> Int -> Int -> IO FetchResult
getChunk DSNormal config ownerId' offset' = do ...
getChunk DSFromFile config ownerId' offset' = do ...
Run Code Online (Sandbox Code Playgroud)
当前实现的问题是它在每个getChunk调用上读取转储文件,显然它是无效的.第一个想法是将转储文件中的行保存到列表中,但是使用url的读数来概括它并不容易.我想,导管或管道可用于构建块的来源,但我不熟悉这些库; 我应该使用其中之一,或者,是否有更好的解决方案?