Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何优化外部java库';什么是资源使用?_Java_Performance_Memory Management_Garbage Collection_Bytecode - Fatal编程技术网

如何优化外部java库';什么是资源使用?

如何优化外部java库';什么是资源使用?,java,performance,memory-management,garbage-collection,bytecode,Java,Performance,Memory Management,Garbage Collection,Bytecode,我有一个自己构建的实用程序,作为一个如此小的专门构建的实用程序,当我在测试中注意到它使用了150mb内存时,我感到非常惊讶。我以1MB的堆设置运行它,它仍然占用了超过50mb的内存 在分析并花了一天时间试图找出我错在哪里之后,我决定测试一个理论。我的实用程序连接到专有应用程序。该连接需要应用程序供应商提供的外部库 我使用这个库写了一个小的Hello World,并注意到以下几点: 1) 从供应商库中声明一个新对象会立即将内存使用率提升到50MB(主要是永久空间) 2) 实际上,尝试连接到应用程序

我有一个自己构建的实用程序,作为一个如此小的专门构建的实用程序,当我在测试中注意到它使用了150mb内存时,我感到非常惊讶。我以1MB的堆设置运行它,它仍然占用了超过50mb的内存

在分析并花了一天时间试图找出我错在哪里之后,我决定测试一个理论。我的实用程序连接到专有应用程序。该连接需要应用程序供应商提供的外部库

我使用这个库写了一个小的Hello World,并注意到以下几点:

1) 从供应商库中声明一个新对象会立即将内存使用率提升到50MB(主要是永久空间)

2) 实际上,尝试连接到应用程序服务器会将内存使用量增加到150MB

就我而言,那简直太傻了

我想知道是否有任何可能驯服这头野兽的方法。也许不知何故卸载了我知道不必要或永远不会被引用的类。供应商不会很快改变事情的


或者只在必要时加载供应商的库呢?这样一来,它在与应用服务器通信时只会占用大量内存。

JVM只加载您实际使用的类。实际上,它只加载您实际使用的方法。e、 如果你不使用的方法中有一个字节码错误,你就不知道了

减少供应商库大小的最佳方法是要求他们改进它,或者编写自己的库

不幸的是,分配适当的应用程序并不是非常资源友好。他们的首要任务是正确性j


BTW:150 MB的内存花费大约6美元,所以我不会花太多的时间来修复它。

对于简单的应用程序,你可以考虑诸如轻量级的NGIX+Python(WSGI)或PHP。@ FLaviUS的替代品,通常我会,但在这种情况下,供应商已经停止了所有其他API,转而支持Java,我无法选择供应商。事实证明,我过去对Java的所有抵制都是徒劳的。现在它是我唯一的选择。150MB的内存不是很好,但是这个小实用程序使用的内存比我机器上目前运行的199个进程中的3个都要多。MS Word正在使用22MB的内存。Hello world不应该使用MS Word 7倍的内存。但是谢谢你的洞察力。我很感激。IMHO,供应商应该生产高效的库,这是一件值得骄傲的事情,也是出于商业原因。