草庐IT

Performance

全部标签

java - Jetty 8 中的默认配置是否适合负载相当重的 Web 应用程序?

已决定将应用程序部署到Jetty8,之前使用的是Tomcat7。Jetty8使用默认设置,似乎工作正常,但偶尔会等待连接,查看jetty.xml我对线程和连接器之间的相互作用感到困惑。但普遍的问题是,默认值是否应该适用于负载相当重的Web应用程序,还是需要对它们进行明显的更改?更新让我尝试更具体地说明这一点。在jetty.xml中它说maxThreads=200所以理论上它可以并行处理200个请求(比我们必须处理的多),但是对于应该配置多少内存jetty是否有经验法则就这样吧。它还定义了一个SelectChannelConnector连接器,我假设这是接收请求并将它们分配给线程的东西。

Java 反射性能在打包为 jar 时下降

我真的很头疼。我尝试了一切,到处搜索。它来self继承的测试JAR的应用程序。(它由一个GUI前端和一个执行实际检查的命令行应用程序组成。GUI通过在其自身上启动一个新的JVM[java-cp"itself.jar"com.different.mainClass]。这是一个糟糕的设计,我知道,但可能是相关的。)无论如何,这个程序包含一些嵌套在两个for循环中的反射调用。问题是当应用程序被JARed时,第一次反射调用每次迭代只花费一秒钟。但是当它从类中运行时,它需要几毫秒。实际上,这意味着这个命令:java-jarmyjar.jar需要几个小时。这个命令:java-cp"...[bunc

java - 最大 jvm 堆的大小未达到或接近机器上的最大物理内存的原因是什么?

我有一台64位机器,理论上地址空间是2^64字节,它有32G的物理RAM。这是一台具有16个内核的服务器级机器,是一台生产服务器。既然没有其他消耗大量内存的进程在运行,并且服务器jvm是唯一正在运行的应用程序,是否有任何理由不将jvm堆设置为非常大的数字?我看到它被设置为少于10场演出,但没有任何我能想到的解释。正如我之前在帖子中提到的:我知道内核、缓存和其他进程需要共享RAM。但是除了任何其他进程和操作系统原生的东西,没有其他事情发生。这台机器是一台生产机器,专门用于这个特定的jvm。是否有任何理由不设置为20gigs/32g(物理内存)?从下面的评论来看——似乎不是……除了需要快速

java - 使用 G1 时,大量 Activity 实例的分配性能会降低吗?

在将我们的一些应用程序从CMS迁移到G1时,我注意到其中一个应用程序的启动时间延长了4倍。由于GC循环导致的应用程序停止时间不是原因。在比较应用程序行为时,我发现这个应用程序在启动后携带了高达2.5亿个Activity对象(在12G的堆中)。进一步调查表明,应用程序在前500万次分配中速度正常,但随着Activity对象池的增大,性能越来越下降。进一步的实验表明,一旦达到一定的Activity对象阈值,使用G1时新对象的分配确实会变慢。我发现将Activity对象的数量加倍似乎会使该分配所需的时间增加2.5倍左右。对于其他GC引擎,该系数仅为2。这确实可以解释减速。不过,有两个问题让我

java - 如何加速 Java Google App Engine 部署?

我正在使用GWT+Java-AppEngine开发一个测试应用程序,部署非常繁重且缓慢。我阅读了GWT的最小化排列或并行编译,但我的互联网连接不太好,我认为我正在将大型文件上传到AppEngine服务器。我该如何优化它?我可以检查瓶颈在哪里吗?我需要多次部署的原因是因为我通过OAuth使用GoogleAPI并且我无法将localhost设置为回调(我可以吗?)。 最佳答案 我不完全确定你的场景,所以我会尝试猜测你的意图。出于开发目的,您确实应该在本地服务器上工作,它带有所有API和stub,用于用户登录等。那是瞬时的。一旦您对本地应

c# - PLINQ (C#/.Net 4.5.1) 与 Stream (JDK/Java 8) 性能对比

我正在尝试比较Java8和PLINQ(C#/.Net4.5.1)中的并行流之间的性能。这是我在我的机器上得到的结果(系统制造商DellInc.系统型号PrecisionM4700ProcessorIntel(R)Core(TM)i7-3740QMCPU@2.70GHz,2701Mhz,4Core(s),8Logical安装的处理器物理内存(RAM)16.0GB操作系统名称MicrosoftWindows7EnterpriseVersion6.1.7601ServicePack1Build7601)C#.Net4.5.1(X64版本)连续剧:470.7784、491.4226、502.4

java - 使用 UUID 实现便宜的 equals() 和 hashCode()

我有一个不可变类TokenList,它由Token对象列表组成,这些对象也是不可变的:@ImmutablepublicfinalclassTokenList{privatefinalListtokens;publicTokenList(Listtokens){this.tokens=Collections.unmodifiableList(newArrayList(tokens));}publicListgetTokens(){returntokens;}}我对这些TokenList执行了多项操作,这些操作将多个TokenList作为输入并返回单个TokenList作为输出。可以有任意

java - 在 HTMLUnit 中禁用 CSS 的权衡是什么?

我在HTMLUnit2.12中遇到了缓慢的问题,因此禁用了CSS,如HTMLUnit:superslowexecution?.我想了解权衡是什么。这是否意味着我不能使用XPath选择器?还有其他权衡吗? 最佳答案 XPath选择器只考虑html/xml文档。CSS不会影响您的查询。如果它会,那么它会根据应用的任何CSS规则产生不确定的结果。就CSS选择器和XPath选择器而言,您可以安全地使用它们而无需事先加载任何CSS。加载它们不会影响您将收到的结果。要使CSS对您使用HTMLUnit产生任何影响,您的代码或加载的JavaScri

java - 如何减少 VisualVM 对堆使用的影响?

我正在尝试优化我的应用程序的内存使用情况。不幸的是,使用-Dcom.sun.management.jmxremote运行我的应用程序并通过VisualVM连接它对堆使用有相当大的影响。一开始我以为是我应用的问题,后来写了一个很简单的程序确认确实是JMX的开销。以下是Activity图片。看完this,我开始明白这是由于VisualVM检索数据的方式,即通过连续轮询连接的应用程序。我通过查看VisualVM的内存采样器证实了这一点。RMITCPConnection(n)线程正在分配180kb/秒。我的问题是,有没有办法减少VisualVM对堆使用的影响?更改轮询间隔可能不太好,因为我对堆

java - 指向 Java LinkedList 节点的指针

我正在以O(1)的时间将n个条目推送到JavaLinkedList。稍后我想在O(1)时删除一些独特的项目。我想保留一个数组,其中包含指向LinkedList中唯一节点的“指针”,以便稍后删除它们。有没有办法在LinkedList或任何其他java类上做到这一点?我尝试将迭代器存储到项目中。所以我可以使用iter.remove()。但我知道当时列表上只能有一个迭代器。我知道一个简单的解决方案是自己实现链接列表。但我宁愿使用LinkedList或其他一些已经实现的Java类。 最佳答案 JavaList实现不提供O(1)删除时的性能*