jvm能识别什么字符集_识别JVM –比预期要难

jvm能识别什么字符集

空白的身份证标签上白色隔离 在Plumbr,我们花费了上个月的时间来为将来的重大改进奠定基础。 此类构件之一是为JVM添加唯一标识符,以便将来自同一JVM的所有会话链接在一起。

尽管一开始似乎是一项琐碎的任务,但是当查看JVM捆绑的jps命令的输出时,围绕该问题的复杂性开始令人头疼,该命令列出了我的机器中当前正在运行的所有Java进程:

My Precious:tmp my$ jps
1277 start.jar
1318 Jps
1166

上面列出了jps命令的输出,列出了我的机器上当前正在运行的所有Java进程。 如果您不熟悉该工具,它将在左侧列出所有进程的进程ID,并在右侧列出所有进程的名称。 显然,唯一一个以有意义的名称列出自己的人就是jps本身。 另外两个不太礼貌。 隐藏在start.jar首字母缩写后面的是Jetty实例,而完全匿名的实际上是Eclipse。 我的意思是,真的– Java世界上最大的IDE甚至不愿意在标准Java工具中用名称列出自己吗?

因此,一眼了解内置工具的最新技术,就可以回顾一下我们当前的要求。 我们当前的解决方案是通过进程ID +计算机名称组合来标识JVM。 这有一个明显的缺点-每当进程死掉时,它的轮回就不会从内核获得相同的ID。 因此,每当JVM Plumbr监视的监视重新启动或终止时,我们都会失去跟踪,无法将后续调用绑定在一起。 对于监视工具来说,这显然不是合理的行为,因此我们继续寻找更好的解决方案。

接下来的明显步骤是三个月前,当时我们允许用户通过-Dplumbr.application.name = my-precious-jvm启动参数指定计算机的名称。 看起来似乎很明智,但在这三个月中,只有2%的用户实际上不愿意指定此参数。 因此,现在该回到绘图板上,看看在尝试将唯一且易于阅读的标识符自动绑定到JVM实例时,我们有哪些选择。

我们的第一种方法是使用main()方法获取类的名称,并将其用作标识符。 当我们在包含四个不同的Jetty实例的开发箱中启动构建时,立即出现的弊端很快就会显现出来–您立刻拥有四个不同的JVM,它们都在同一个不太唯一的标识符下进行绑定。

下一个尝试是解析应用程序的内容并从部署描述符中识别应用程序–毕竟, Plumbr监视的大多数应用程序都打包为WAR / EAR捆绑软件,因此这将是有意义的,并使用捆绑软件中的信息。 实际上,绝大多数工程师的确在web.xmlapplication.xml<display-name>参数中给出了有意义的名称。

这解决了部分问题–当所有四个Jetty实例都运行具有不同<display-name>的应用程序时,它们将显示为唯一。 确实如此,直到我们的登台环境表明情况并非总是如此。 我们在同一台计算机上有多个不同的Plumbr Server实例,它们使用不同的应用程序服务器,但是使用相同的<display-name>参数部署相同的WAR文件。 您可能会猜到,这再次扼杀了此类ID的唯一性。

另一个引起问题的事实是,有一些应用程序服务器正在运行多个Web应用程序-将多个WAR文件部署到容器中后会发生什么?

因此,我们不得不进一步挖掘。 为了区分在同一台机器上运行同一应用程序的多个JVM,我们添加了启动文件夹以保证标识符的唯一性。 但是多次战争的问题仍然存在。 为此,我们回到了最初的假设,即使用主类名称作为标识符。

还有一些技术上的细微差别,例如区分用于ID的实际哈希值和相同哈希值的用户友好版本,现在,我们提供了一种解决方案,它将在您监视的JVM列表中显示类似的内容:

虚拟机 由于
青蒿素分期 自助服务(WAR) 2014年7月7日11:45
青蒿素分期 网上商店(WAR) 2014年8月7日18:30
芳纶 com.ringbearer.BatchProcessor 01.01.2001 00:00


因此,实际上,我们可以提出一个不错的解决方案,并在其他所有方法均失败的情况下使用-Dplumbr.application.name参数进行手动命名。 仍然存在一个问题–为什么JVM工具和API完全缺少系统管理员通常需要的东西?

翻译自: https://www.javacodegeeks.com/2014/07/identifying-jvm-trickier-than-expected.html

jvm能识别什么字符集

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/341035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC绑定,无设置器

即使域模型对象没有设置器&#xff0c;也可以将表单参数绑定到域模型对象。 只需添加带有InitBinder方法的ControllerAdvice类&#xff0c;即可通过initDirectFieldAccess&#xff08;&#xff09;方法将应用程序配置为进行字段绑定 package boottests.controllers;import org…

idf和adf_ADF:弹出窗口,对话框和输入组件

idf和adf在本文中&#xff0c;当我们有一个af&#xff1a;popup包含af&#xff1a;dialog并在其中包含输入组件时&#xff0c;我想重点介绍一个非常常见的用例。 实现此用例时&#xff0c;需要注意一些陷阱。 让我们考虑一个简单的示例&#xff1a; <af:popup id"p1&…

自制串口示波器小工具

因为博主喜欢玩嵌入式&#xff0c;经常与各种硬件打交道&#xff0c;常常需要采集下位机的信号&#xff0c;无奈学生党&#xff0c;买不起示波器&#xff0c;自己用python写了一个串口示波器的上位机&#xff0c;可以很简单的和下位机配合组成示波器&#xff0c;效果如图&#…

ELK堆栈入门

朋友不允许朋友写用户身份验证。 厌倦了管理自己的用户&#xff1f; 立即尝试Okta的API和Java SDK。 在几分钟之内即可对任何应用程序中的用户进行身份验证&#xff0c;管理和保护。 好的设计原则要求微服务架构是可观察的&#xff0c;并提供集中的监视工具。 该工具使开发团队…

speex在stm32f407单片机上的移植

最近做的网络语音的项目需要用到speex中的一些功能&#xff0c;查了一下资料发现移植给mcu的经验大多零零碎碎&#xff0c;自己捣鼓了一晚上总算是移植好了&#xff0c;写个博客记录一下。1.获取speex源码 官方下载&#xff1a; 官方地址 博主移植用的源码以及移植好的工程下…

在Kafka上异步发送数据

对于一个项目&#xff0c;我试图记录用户的基本交易&#xff0c;例如添加和删除一个项目以及多种类型的项目&#xff0c;并为每笔交易向kafka发送一条消息。 日志机制的准确性不是至关重要的&#xff0c;在kafka服务器停机的情况下&#xff0c;我不希望它阻止我的业务代码。 在…

devc++工程提示“源文件未编译”的可能问题

博主使用devc5.11&#xff0c;win7&#xff0c;创建了一个c工程以后编译一直提示“源文件未编译”&#xff0c;查了两小时博客期间反复重装&#xff0c;最后还是靠自己误打误撞解决了&#xff0c;解决步骤如下&#xff1a; 1、安装时语言选择English。 网上各种教程教新人安装…

vmware网络桥接模式无法上网的解决办法

1.vmware->编辑->虚拟网络编辑器->桥接模式->选择有线网卡 2.VMware-虚拟机设置-网络适配器-桥接模式-复制物理网络连接状态、启动时连接 3.重启虚拟机&#xff0c;完成 如果出现连接到网络但是无法上网的情况&#xff0c;还需做如下处理 1.sudo gedit /etc/res…

oracle idm_深入了解Oracle IDM审核

oracle idm在处理敏感信息的任何产品中&#xff0c; 报告都是至关重要的功能。 同样适用于身份和访问管理工具。 Oracle IDM的审核模块是其OOTB报告功能的基础。 让我们快速了解一下审核引擎以及它如何促进OIM中的报告功能。 这里介绍的用例很简单– 在OIM中更改为用户记录。 …

C语言编写贪吃蛇游戏

自己用C语言编写一个贪吃蛇游戏&#xff0c;效果如图&#xff1a; 源代码可免费下载&#xff0c;传送门如下&#xff1a; 点击下载贪吃蛇游戏和源代码

JDK 13中的JEP 355文本块

JDK 13已于2019年9月17日上线GA&#xff0c; 此处列出了重要的新功能。 新功能之一是“文本块”。 这样可以轻松地编写多行字符串&#xff0c;而不必在拆分成不同的行时进行串联。 让我们快速了解创建多行字符串的不同方法&#xff1a; String aBlock """ SE…

java8 默认方法_默认方法:Java 8的无名英雄

java8 默认方法几周前&#xff0c;我写了一个博客&#xff0c;说开发人员学习新语言是因为它们很酷。 我仍然坚持这个主张&#xff0c;因为关于Java 8的事情真的很酷。 尽管毫无疑问&#xff0c;该节目的明星是添加了Lambdas和将函数提升为一等变量&#xff0c;但我目前最喜欢的…

两个常见的并发错误

作为Baeldung的编辑&#xff0c;我很高兴与一位作者一起撰写有关Java通用并发陷阱的文章。 这是一本不错的书&#xff0c;但是假设开发人员具有一定的能力。 我已经看到了几件即时并发失败的事情。 它们很容易添加到代码中&#xff0c;并保证为您提供奇怪的结果。 开发人员仍会…

kotlin自定义View出现 java.lang.ClassNotFoundException

问题1&#xff1a;找不到所引用的自定义View Didn’t find class “dxf.example.dxf.customviewdemo.MyTextView” on path: DexPathList 原因&#xff1a;build.gradle中 应用插件 解决&#xff1a;添加 apply plugin: ‘kotlin-android’ 问题2&#xff1a; java.lang.Cl…

javafx swing_JavaFX技巧9:请勿混用Swing / JavaFX

javafx swingJavaFX团队非常努力地说服我们&#xff0c;因为可以将Swing内容嵌入JavaFX UI中&#xff0c;反之亦然&#xff0c;因此从Swing迁移到JavaFX很容易。 我必须承认&#xff0c;我从来没有尝试过&#xff0c;但是根据我从客户那里得到的反馈&#xff0c;我只能建议不要…

kotlin-unresolved reference daclaredFunctions

问题&#xff1a;如题 原因&#xff1a; 默认编译时不导入kotlin-reflect.jar包导致&#xff0c;所以在该包中的默认不能使用 解决 需额外在dependencies中添加 kotlin-reflect的编译&#xff0c; compile “org.jetbrains.kotlin:kotlin-reflect:$kotlin-version”

AWS Loft的数据库周

这是我的笔记&#xff1a; https://databaseweekoctober2019sf.splashthat.com AWS上的数据库&#xff1a;正确工作的正确工具 在许多此类谈话中&#xff0c;我并没有做过深刻的记录。 我正在关注重点。 PostgreSQL排在MySQL之后。 AWS上8种类型的数据库&#xff1a; 关系…

MockWebServer[45678] connection from null failed: java.net.SocketException

MockWebServer使用中的异常 MockWebServer: MockWebServer[45678] connection from null failed: java.net.SocketException: sendto failed: EBADF (Bad file number) java.io.IOException: unexpected end of stream on Connection Caused by: java.io.EOFException: \n n…

ExternalDocumentationLinkImpl(url=https://developer.android.com/reference/, packageListUrl=https://d

dokka 问题 java.lang.RuntimeException: Exception while loading package-list from ExternalDocumentationLinkImpl(urlhttps://developer.android.com/reference/, packageListUrlhttps://developer.android.com/reference/package-list) 原因 使用了下面这个任务定义…

IntellijIDEA插件编写-删除/插入/替换文档内容

错误 ERROR - plication.impl.ApplicationImpl - Assertion failed: Write2018-03-24 01:57:49,835 [ 138880] ERROR - plication.impl.ApplicationImpl - Assertion failed: Write access is allowed inside write-action only (see com.intellij.openapi.application.Appli…