タグ

gcに関するbabydaemonsのブックマーク (10)

  • unmanagedクラスにmanagedなメンバを持たせる - schima.hatenablog.com

    以下のコードはビルドできません。「マネージ 'hoge' をアンマネージ 'Native' で宣言できません。」というメッセージが出ます。 class Native { public: StringBuilder^ hoge; }; managedな変数hogeがGCによって移動された場合に、unmanagedなクラスではその追跡ができなくなるのが要因です。これを克服する方法を以下に書いていきます。 なお、ここでいうmanagedな変数とは、ref classです。型名の後ろに ^ が付くものです。 方法1 : ポインタで保持する GCで動かないよう固定するといえば、System::Runtime::InteropServices::GCHandleの出番です。 GCHandle::Alloc によってmanagedオブジェクトのハンドルを取得します。ハンドルはIntPtrに変換でき、また

    unmanagedクラスにmanagedなメンバを持たせる - schima.hatenablog.com
    babydaemons
    babydaemons 2016/10/26
    これでネイティブアプリから C# が使える!“幸い便利なテンプレート構造体が用意されています。msclr::gcroot<T>です。GCHandleとの変換処理を覆い隠してくれます。”
  • oo4o+VB.NETの注意点(オープンカーソル) - 日々常々

    JavaCloudMeetingで熱くなってるところに冷や水をぶっ掛ける自虐プレイ的に今日はVB.NETの記事です。 VB.NETで作られたASP.NETのWebアプリケーションでデータベース接続にoo4oを使用するお話。このご時勢にVB.NETのWebアプリケーションとか都市伝説とか思わないでください。あるんです。詳細を書くと自分の首を絞める事になるのでやめときます。 さてVB.NET+oo4oで詰まった所を晒してやる。頼りになる情報はOracle Objects for OLE開発者ガイドです。うっかり検索しても、VBやVBAの話が出てくるからあんまり意味ないです。 直面した問題 「ORA-01000 最大オープン・カーソル数を超えました」 こんなものがWebアプリケーションで出てきたら、普通はバグです。普通に考えてカーソルのクローズ漏れです。出たときはものすっごく気楽に考えてました。

    oo4o+VB.NETの注意点(オープンカーソル) - 日々常々
    babydaemons
    babydaemons 2013/03/06
    あー、VB脳醜いけど、CLRのGCをあてにしたruntimeの設計も醜いわ。。。
  • RAII - Wikipedia

    RAII(Resource Acquisition Is Initialization)は、日語では「リソース取得は初期化である」「リソースの確保は初期化時に」「リソースの取得と初期化」などの意味を持ち、資源(リソース)の確保と解放を、クラス型の変数の初期化と破棄処理に結び付けるというプログラミングのテクニックである。特にC++とD言語で一般的であり、デストラクタをサポートしないC言語などに対する優位性や利便性のうちのひとつとなっている。 RAIIでは、資源の取得をクラス型変数の構築(初期化)時に、また返却を破壊時に行う。特にプログラムの制御フローが自動変数の属するブロックを抜けるとき、その変数のデストラクタが自動的に呼ばれるため、デストラクタを適切に記述したクラス型変数の寿命が終わるとすぐに資源が返却されることが保証できるようになる。これは例外が発生したときでも同様であるため、RAII

    babydaemons
    babydaemons 2012/08/22
    当たり前の習慣にこのような名前があったとは。
  • Kurusugawa – Kurusugawa Computer Inc.

    ビジネスに役立つ AI をお届けします 来栖川電算は AI 技術の研究開発から応用まで幅広いサービスを提供する名古屋工業大学発ベンチャー(2003 年設立)です。未踏ソフトウェア創造事業の採択者やソフトウェア分野の様々なコンテストの入賞者が在籍しています。最先端の AI 技術だけでなく、膨大な高品質データを生み出す技術、ハードウェアの限界性能を引き出す実装技術、高品質なソフトウェアを実現する設計技術にも定評があります。 手軽に使える様々な認識エンジン 来栖川電算の認識エンジンを活用すれば、センサーデータに埋め込まれた意味を手軽に抽出できます。種類ごとに用意された認識エンジンは教師データや設定を変えるだけで様々なタスクへ応用できます。LinuxAndroid・iOS 用のライブラリ、WebAPI、コマンドラインツールなどプログラマフレンドリーな SDK を提供しています。トレーニングやコン

    Kurusugawa – Kurusugawa Computer Inc.
    babydaemons
    babydaemons 2012/06/06
    なんだか、才能の無駄遣いな気もしないでもないけど、実装したことはすごいw
  • 構造体とクラスの使い分け - NyaRuRuが地球にいたころ

    @IT 会議室ネタ.内容は GC 絡み. 構造体とクラスの選択 - @IT Insider.NET 会議室 回答に妙に気になる内容がたくさんあったので少しだけ書いてみます.アカウント無いので. あと,同じサイトで以前こんな記事を書いているので,よろしければどうぞ的な. 連載 .NETWindows Vistaへ広がるDirectXの世界 第6回 .NETアプリを軽快にするためのガベージ・コレクション講座 ひとくちに GC 対策といっても色々あって,たとえば以下の 2 つは別物です. GC の発生頻度そのものを抑えるために, GC ヒープからのアロケーションを避けること GC 発生時の停止時間を短くするために,「生きているオブジェクト」の個数を少なく保つこと ボクシングを減らすのは前者,値型だけで構成された構造体の配列を活用するのは後者に有用です. んで各論. ひろしさんの書き込み (20

    構造体とクラスの使い分け - NyaRuRuが地球にいたころ
  • .NET TIPS ガベージ・コレクタを明示的に動作させるには? - C# VB.NET - @IT

    C++やVisual Basic 6.0の世界でプログラミングしてきた技術者が.NET Frameworkの世界に入ってきてまずおどろくのは、プログラムを実行していると、プロセスが使用するメモリ量がどんどん増えていくことである。「メモリ・リークか!?」と焦ることもあるが、これは正常な動作である。 メモリの解放忘れは典型的なバグの要因であり、メモリ解放を自動化することによって、プログラムの信頼性は向上し、プログラマーの負担も減る。自動的なメモリ解放を行う機構は、ガベージ・コレクタと呼ばれ、解放する行為をガベージ・コレクションと呼ぶ。問題は、ガベージ・コレクションがいつ行われるかであるが、これはメモリが不足してきた場合や、明示的に動作を指示された場合にのみ行われる。つまり、メモリが潤沢に余っている場合には、プロセスの使用するメモリ量が増加するのが正常な動作である。そのままメモリ不足でプログラム

    babydaemons
    babydaemons 2012/04/18
    フルGCが走る前にアプリが落ちたのは、アプリ実装が悪いのか処理系が悪いのか?orz
  • KMC Staff Blog:GCCでリンク時に不要なコードとデータを削除する方法

    2010年04月26日 GCCでリンク時に不要なコードとデータを削除する方法 これもまた、ELC(Embedded Linux Conference)でのセッションの紹介です。 ELCのスライドのページのDenys Vlasenkoさんの"Link time dead code and data elimination using GNU toolchain"を見てください。 組み込みシステムではやはりコードやデータのサイズの削減が必要になる場面がしばしばあります。これを毎回手作業でやるのではscaleしません。このセッションではGNU Tool chainでこれを行う方法を紹介しています。 必要なバージョンはgcc 4.x 以上、binutils 2.18以上。 gcc 4.5から入ったlto(link time optimization)はこのセッションの話とは別です。 通常はリンクす

  • Javaのガベージ・コレクションを知る

    [GC 1419K->1159K(1984K), 0.0041208 secs] [Full GC 1159K->727K(1984K), 0.0100906 secs] [GC 1879K->1879K(3140K), 0.0006966 secs] [Full GC 1879K->1303K(3140K), 0.0111883 secs] [GC 3607K->3607K(5448K), 0.0001983 secs] [Full GC 3607K->2455K(5448K), 0.0126519 secs] Full GCの発生に注目する 「GC」で始まる行は、Scavengeガベージ・コレクション(Scavenge GC)の発生を表します。一方、「Full GC」で始まる行は、Fullガベージ・コレクション(Full GC)を表します(この両者の違いについては次回説明します)。また

    Javaのガベージ・コレクションを知る
  • ガーベジ・コレクション:GC ( Garbage Collection ) についての簡単な説明と調査方法

    Java の GC について簡単に説明いたします。 GC はヒープやヒープサイズと密接な関連があります。以下のページも合わせて参照ください。 「Java のヒープサイズ」についての簡単な説明 Java プログラムが動作するとオブジェクトはメモリ上にロードされます。 大きなオブジェクトを使用したり、また、使用するオブジェクトの数が多ければ、その分メモリの使用領域は増加します。 そのまま、新しいオブジェクトをロードし続けると、Java が使用できるメモリ領域がメモリが一杯になります。 * 「 Java が使用できるメモリ領域 」、これをヒープ領域と言います。( ヒープ領域以外にも Permanent 領域が存在します。) メモリが一杯になると新しいオブジェクトをロードできず、プログラムを実行することができなくなります。 このような状態を回避するための仕組みが ガーベジ・コレクショ

  • 「Java SE 6完全攻略」Garbage First GC

    Javaがヒープの管理にGCを使用しているのは、読者の皆さんもご存じの通りです。GCの手法にはいろいろありますが、HotSpot VMが採用しているのが世代別GCです。今回は、世代別GCの概要と問題点を解説したうえで、これを解決するために導入されたGarbage First GCについて説明します。 世代別GCの概要と問題点 世代別GCは若いインスタンスと時間を経たインスタンスを別々の領域に配置し、管理する手法です。これは寿命の短いインスタンスほど多いという性質をベースにしています。 若いインスタンスが配置される領域をヤング領域、時間を経たインスタンスを配置する領域をオールド領域とよび、それぞれの領域で異なるGCの手法を使用します。つまり、ヤングとオールドという世代の異なる領域を、それぞれ異なるGCで管理するのが世代別GCというわけです。 ヤング領域には高速ですが漏れのあるGCを用います。

    「Java SE 6完全攻略」Garbage First GC
  • 1