我使用java melody监视生产环境中的内存使用情况。
要求是内存不应超过<?php
/**
* @package be
* @copyright Copyright (c) 2010-2015 MeigeeTeam. (http://www.meigeeteam.com)
*/
$meigeeOptions = $this->getLayout();
$lightBox = $meigeeOptions->getMConfigResultByAlias('lightbox_listing');
$timerStatus = $meigeeOptions->getMConfigResultByAlias('timer_status');
$timerListingStatus = $meigeeOptions->getMConfigResultByAlias('timer_listing_status');
$catalogModeWrapper = $meigeeOptions->getMConfigResultByAlias('catalog_mode');
$catalogMode = $catalogModeWrapper['value']['sv2']['value'];
?>
<?php if (($_products = $this->getProductCollection()) && $_products->getSize()): ?>
<div class="row">
<div class="widget widget-new-products clearfix">
<div class="col-xs-12">
<header class="widget-title">
<h2><?php echo $this->__('New Products') ?></h2>
</header>
</div>
<div class="widget-products col-xs-12">
<?php echo $this->getPagerHtml() ?>
<div class="row">
<ul class="products-grid clearfix">
<?php $i=0; foreach ($_products->getItems() as $_product): ?>
<li class="item col-xs-6 col-sm-3">
<div class="image-box">
<?php if($lightBox){ ?>
<a href="<?php echo $_product->getProductMediaResized(930, 'small_image')->getImageSrc(); ?>" data-toggle="lightbox" class="lightbox-button" data-footer="<?php echo $this->stripTags($_product->getName(), null, true) ?>" title="<?php echo $this->__('Lightbox'); ?>">
<i class="icon-search"></i>
</a>
<?php } ?>
<?php echo $this->getLayout()->createBlock('page/html')->setProductInfo($_product)->setTemplate('catalog/product/product_labels.phtml')->toHtml(); ?>
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>" class="product-image">
<span class="mask"></span>
<?php
echo $_product->productHoverImage($this, 800);
$escaped_label = $this->stripTags($_product->getName(), null, true);
echo '<img '. $_product->getProductMediaResized(800, 'small_image')
->addImageHtmlAttributte('alt', $escaped_label)
->addImageHtmlAttributte('title', $escaped_label)
->getImageHtmlAttributte().' />';
?>
</a>
<div class="actions clearfix">
<?php if ($_product->isSaleable()): ?>
<?php if($catalogMode == 0) { ?>
<button type="button" title="<?php echo Mage::helper('core')->quoteEscape($this->__('Add to Cart')); ?>" class="btn btn-default pull-left" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><i class="icon-basket"></i></span></span></button>
<?php } ?>
<?php else: ?>
<a class="btn btn-default" href="<?php echo $_product->getProductUrl() ?>" title="<?php echo Mage::helper('core')->quoteEscape($this->__('Read More')); ?>"><i class="icon-link"></i></a>
<?php endif; ?>
<?php if ($this->helper('wishlist')->isAllow()) : ?>
<span class="link-wishlist-wrapper"><a href="<?php echo $this->getAddToWishlistUrl($_product) ?>" class="link-wishlist" title="<?php echo $this->__('Add to Wishlist'); ?>"><i class="icon-heart-fa"></i></a></span>
<?php endif; ?>
<?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?>
<span class="link-compare-wrapper"><a href="<?php echo $_compareUrl ?>" class="link-compare" title="<?php echo $this->__('Add to Compare'); ?>"><i class="icon-shuffle"></i></a></span>
<?php endif; ?>
</div>
</div>
<h3 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>)"><?php echo $this->helper('catalog/output')->productAttribute($_product, $_product->getName() , 'name') ?></a></h3>
<?php if($_product->isSaleable()): ?>
<p class="availability in-stock"><i class="icon-record"></i><?php echo $this->__('Product') ?> <span><?php echo $this->__('In stock') ?></span></p>
<?php else: ?>
<p class="availability out-of-stock"><i class="icon-record"></i><?php echo $this->__('Product') ?> <span><?php echo $this->__('Out of stock') ?></span></p>
<?php endif; ?>
<?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>
<?php echo $this->getPriceHtml($_product, true, '-new') ?>
<?php if($timerStatus && $timerListingStatus) {
echo $this->getLayout()->createBlock('page/html')->setProduct($_product)->setTemplate('catalog/product/listing_timer.phtml')->toHtml();
} ?>
<hr class="indent-18 white-space"/>
</li>
<?php endforeach; ?>
</ul>
</div>
</div>
</div>
</div>
<?php endif; ?>
。
我已经完成了最大化的代码优化但仍然使用256MB/512MB
但是当我手动执行java melody中的垃圾收集器时,内存消耗为448MB/512MB
。
答案 0 :(得分:0)
为什么你真的关心堆使用?只要你设置XMS(最大堆)你就可以了。让java在适合的时候调用GC。只要你有自由堆就没有意义,只是为了拥有大量的空闲堆来进行GC和释放堆。
如果要限制进程分配的内存XMX是不够的。您还应该限制本机内存。
你应该关心的是
有关更多技术详情,请参阅https://blog.gceasy.io/2017/05/30/improving-your-performance-reports/ https://blog.gceasy.io/2017/05/31/gc-log-analysis-use-cases/。您还可以使用https://blog.gceasy.io/分析GC日志,它将帮助您了解JVM如何使用内存。
答案 1 :(得分:0)
您可以在代码中使用这两个调用之一来调用垃圾回收(等效):
System.gc();
Runtime.getRuntime().gc();
最好将调用放在定期调用的Runnable中,具体取决于达到内存限制的速度。