zoukankan      html  css  js  c++  java
  • powershell中使用超大内存对象

    powershell中使用超大内存对象

    简单介绍了powershell中超大内存对象的用途,开启powershell超大内存对象的办法。

    powershell 传教士 原创文章 2016-12-31 允许转载,但必须保留名字和出处,否则追究法律责任

    powershell 2GB large object .net 大对象

    前 言

    问:powershell中,哪些对象有可能会占用大内存?

    答: stringbuilder对象,大数组arraylist,hashset等。

    问:powershell中,stringbuildr对象有什么用?

    答: 还是比较常用的,让大文件在内存中查找替换,这样比string快不少。

    问:1GB的stringbuilder对象,能存多少文本?

    答: .net 采用utf16,即不论一个英文字母还是一个汉字,都占用2个字节。 所以说1GB的文本文件,读取入内存后,大概要占用2.1GB左右的内存。

    正 文

    问题的提出: 一个变量占用1GB内存,算是大么?

    我有台测试机子,用的是win10 ltsb 2016的系统,物理内存还剩30G,虚拟内存20G。 但是建立个1GB的对象都报错。而建立900MB的就不报错了,代码如下:

    [System.Reflection.Assembly]::loadwithpartialname("System.Text") | Out-Null 
    [int32]$long = 1gb 
    $内存字符串对象 = New-Object System.Text.StringBuilder($long)


    本来手册中说,默认能使用2GB内存的。唉,这年头啥都缩水呀,看来我只能启用.net的超大对象了。

    前提:

    1 用64位系统,物理内存足够,虚拟内存足够。

    2 .net版本至少是4.51,当然最好是最新版4.62。

    3具体解决办法:

    用记事本,新建一个文本文件,

    文件名为:【powershell.exe.config】

    文件编码为:【utf8+bom头】,即用记事本保存成utf8编码。

    文件内容为:

    <?xml version="1.0" encoding="utf-8" ?> 
    <configuration>     
        <runtime>       
            <gcAllowVeryLargeObjects enabled="true" />     
        </runtime> 
    </configuration>

    保存后,粘贴此文件到【c:WindowsSystem32WindowsPowerShellv1.0】

    再重新运行powershell.exe,重新运行上述脚本代码,就不报错了。

  • 相关阅读:
    web工程导入新环境的注意事项
    Mysql group by,order by,dinstict优化
    Dijkstra and Floyd算法
    百度面试题
    腾讯面试题
    百度笔试3
    百度笔试2
    百度笔试1
    百度2011实习生招聘笔试题
    百度2011.10.16校园招聘会笔试题
  • 原文地址:https://www.cnblogs.com/piapia/p/6241040.html
Copyright © 2011-2022 走看看