草庐IT

jvm-bytecode

全部标签

java - Sun JVM 能否毫无问题地处理巨大的堆大小?如何处理?

我听说有几个人声称您无法扩大JVM堆大小。我听说实际限制是4GB(我听一位IBM顾问这么说)、10GB、32GB等等……我简直不敢相信这些数字中的任何一个,并且一直在想这个问题现在一段时间。所以,我有三个部分的问题,我希望有经验的人能回答:给定以下情况,您将如何调整堆和GC设置?最终用户是否会注意到明显的故障(JVM暂停等)?这真的还有效吗?我认为应该。案例:64位平台64核64GB内存应用服务器面向客户端(即Jboss/tomcat网络应用服务器)-最终用户可能会注意到JVM的完全暂停SunJVM,可能是1.5为了证明我没有要求你们做我的作业,这就是我想出的:-XX:+UseConc

java - JVM 的功能/不可变数据结构?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion有谁知道Java/JVM数据结构库提供与熟悉的Java数据结构等效的功能(又名不可变,或功能意义上的“持久”)?我所说的“功能性”是指对象本身是不可变的,而对这些对象的修改会在适当的情况下返回与父对象共享相同内部结构的新对象(为了时间和空间上的效率;天真的实现可以只复制每次写入的全部内容)。很像Java的并发库,这似乎不是我可以或不应该自己实现的东西,所以如果有一个我

java - JVM 到底什么时候抛出 OutOfMemoryError

我们正在运行一个有时会“卡住”的Java应用程序,因为某些线程几乎使用了所有堆。尽管JVM执行的FullGC持续时间超过60秒,但应用程序从未因OutOfMemoryError而死。我从Java文档中读到:Thethroughputcollectorwillthrowanout-of-memoryexceptioniftoomuchtimeisbeingspentdoinggarbagecollection.Forexample,iftheJVMisspendingmorethan98%ofthetotaltimedoinggarbagecollectionandisrecoverin

java - Cygwin CTRL-C(信号中断)无法正常工作 - JVM 关闭 Hook 未启动

我正在开发一个Java应用程序,它利用关闭Hook来清理程序的终止/中断,但我注意到Cygwin的CTRL-C实现似乎不会触发关闭Hook。从表面上看,它似乎中断了进程,将控制权交还给命令行,但进程的关闭Hook根本没有被触发,因此不会发生清理。在cmd中它们被捕获,但由于各种限制,我需要以某种方式让它们在Cygwin中工作。是否有任何方法可以通过Cygwin在正在运行的进程中触发SIGINT,或者我可以使用关闭Hook的替代方法来清理中断和终止? 最佳答案 Bash通过中间bash进程(bashshell->bash->java)

java - 为什么 JVM 有最大内联深度?

java有一个参数-XX:MaxInlineLevel(默认值为9),它控制内联嵌套调用的最大数量。为什么会有这样的限制?为什么通常基于频率和代码大小的启发式方法不足以让JVM自行决定内联的深度?(这是由JitWatch提示的,向我展示了深度嵌套的GuavacheckArgument调用由于深度而未被内联) 最佳答案 一些重要的搜索揭示了这个有趣的小fragment(我实际上到达了Google搜索的4页):if(inline_depth()>MaxInlineLevel){return"inliningtoodeep";}if(me

java - 从 JVM 发送 POSIX 信号

如何从JVM内部发送POSIX信号?(在Java或Clojure中)在尝试使用谷歌搜索之前,我从未想过这会成为一个问题—有很多关于处理信号的信息,但没有关于发送信号的信息。除了使用JNI或调用shell执行“kill”之外,还有其他方法可以向PID发送信号吗? 最佳答案 好的。回答自己:我查看了建议的库,但我对引入对大量代码的新依赖性持谨慎态度,尤其是当我只使用其中的一小部分时。事实证明,最简单的方法是使用JNA并与系统(libc)API接口(interface)。在Clojure中,这几乎等于:(jna-invokeInteger

java - 多个 JVM 与单个应用程序服务器

我正在处理一个在其自己的JVM中为每个客户运行Java应用程序的系统。我们有大约六台专用服务器,它们现在总共运行着将近100个JVM,以及用于管理这些JVM的自定义脚本集。这个设置在这一点上确实显示出它的时代:管理那么多JVM正在成为监控/管理的噩梦,我们一直在处理堆大小问题。我们想转向更现代的方法,并在每台物理机的单个应用服务器中运行一堆应用程序。然而,保持应用程序独立在隔离方面确实具有明显的优势(例如,内存不足错误只会影响一个客户)。每个客户的软件堆栈的内存要求差异很大。我的问题:有没有一种方法可以两全其美,在一个JVM(应用服务器)中运行多个应用程序,同时仍然保持一定程度的隔离?

java - JVM 终止时会发生什么?

当JVM以System.exit(0)或^C或类似的方式终止时会发生什么?我读到诸如“进程刚刚被吹走”和“每个线程都停止”之类的内容,但我想知道到底发生了什么。我已经知道shutdownHook仍然以某种方式执行,但是在调用shutdownHooks之前会发生什么,在所有这些线程完成后会发生什么?我想正确地实现这样一个shutdownHook,为此我需要对哪些仍会执行,哪些不会执行做出正确的假设。更新:一些代码:classSomeObject{privatebooleanstopped;SomeObject(){stopped=false;Threadhook=newThread(){

java - 如何在 Jenkins 中为每项工作全局设置 JVM 选项?

我最近安装了一个新的JDK(1.7u9),我遇到了一些非常奇怪的VerifyError。Inathread我发现如果我使用-XX:-UseSplitVerifier魔术开关进行编译,它可以帮助我。我想做的是在Jenkins中全局设置这个Java选项,但还没有找到任何配置。有人可以帮我解决这个问题吗?我能想到的最接近的事情是通过Maven设置参数,但我必须为每个项目配置都这样做-我想避免这种情况。提前致谢。 最佳答案 在主菜单项ManageJenkins->ConfigureSystem下,您可以在GlobalMAVEN_OPTS的框

java - 如何创建自定义 JVM?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭9年前。Improvethisquestion我正在阅读http://www.cafeaulait.org/javafaq.html上的项目#6.10|我开始想知道大公司是如何着手创建他们自己的JVM实现的。对一个人来说,一个实验性的东西是可能的(并且可行的)吗?